mysql - SQL选择并集的多个项目

标签 mysql sql union mysql5

我正在执行多个选择并希望计算重叠。示例:

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/

相关文章:

MySQL,我想根据连接结果插入、更新或删除

MySQL 更易读的方式来查找属于非常大的集合的列值。

c# - HashSets的自定义比较

php - 插入从 PHPMYADMIN 自动生成的 PHP 代码

mysql - 仅从字符串中提取字符

mysql - 查询需要很长时间才能执行

sql - 使用 objection.js 或 knex.js 在 postgres 中的字符串列的 json 数组中查询

php - 将值添加到文件中的数组并保存

sql - Oracle 的棘手 View

MySQL - 结合 SELECT 两个表