我正在执行多个选择并希望计算重叠。示例:
SELECT id FROM foo WHERE ...
SELECT id FROM bar WHERE ...
SELECT id FROM baz WHERE ...
分别将这些查询称为 a、b 和 c。假设 a 给出 (1,2,3,4,5),b 给出 (1,3,5),c 给出 (4,5,6)。我想将这些结合起来并计算多样性。对于上面的例子,我要找的结果是
id | multiplicity
-----------------
1 | 2
2 | 1
3 | 2
4 | 2
5 | 3
6 | 1
如何在一个查询中在 MySQL5 中执行此操作? (a、b 和 c 部分可以是普通选择或存储过程)。
最佳答案
目前我无法验证这一点,但我相信这会奏效
SELECT id, count(id) AS multiplicity
FROM
(
SELECT id FROM foo WHERE ...
UNION ALL
SELECT id FROM bar WHERE ...
UNION ALL
SELECT id FROM baz WHERE ...
) AS TablesTogether
GROUP BY id
关于mysql - SQL选择并集的多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435096/