gpt4 book ai didi

mysql - 使用 SQL 查找列变量的所有可能组合

转载 作者:行者123 更新时间:2023-11-29 12:35:45 24 4
gpt4 key购买 nike

我有一个 SQL 表,其中有 N 列。称它们为“Col1”、“Col2”、...、“ColN”。我可以通过查询找出 Col1 中有多少个唯一元素:

从 mytable 中选择计数(不同的 Col1)

我可以为每一列独立地执行此操作。假设我在 Col1 中有 M_1 个唯一元素,在 Col2 中有 M_2 个唯一元素,等等,我可以使用哪个命令来查找数据集所有可能组合的总数?也就是说,哪个单个查询将为我计算 (M_1*M_2*...*M_N)?

PS:这里对 SQL 非常陌生,所以我不确定这是否重要 - 但我在 Windows 上使用 MySQL Workbench。

最佳答案

SELECT COUNT(*)
FROM (SELECT DISTINCT col1 FROM YourTable) AS t1
CROSS JOIN (SELECT DISTINCT col2 FROM YourTable) AS t2
CROSS JOIN (SELECT DISTINCT col3 FROM YourTable) AS t3
...

CROSS JOIN 计算给定表之间的叉积。

另一种写法是:

SELECT COUNT(DISTINCT t1.col1, t2.col2, t3.col3, ...)
FROM YourTable AS t1
CROSS JOIN YourTable AS t2
CROSS JOIN YourTable AS t3
...

但最简单的可能是:

SELECT COUNT(DISTINCT col1)*COUNT(DISTINCT col2)*COUNT(DISTINCT col3)*...
FROM YourTable

这不需要计算任何叉积,因此它应该是最有效的。如果你在列上有索引,它甚至不需要读取表数据,这一切都可以使用索引来完成。

关于mysql - 使用 SQL 查找列变量的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26821541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com