COUNT多条记录MYSQL
问题描述:
我有这样的两个MySQL表COUNT多条记录MYSQL
main_date_family
main_date_non_family
我想凑NT重复记录的两个表中这样
---------------------
| id_file | c |
---------------------
| 1 | 3 |
| 6 | 2 |
| 14 | 5 |
答
您需要使用UNION ALL
实现了输出:
SELECT
t.id_file,
COUNT(*) AS c
FROM
(
SELECT id_file FROM main_date_family
UNION ALL
SELECT id_file FROM main_date_non_family
) AS t
GROUP BY t.id_file
编辑:
SELECT
t.id,
COUNT(t.id) AS c
FROM
(
SELECT id_file AS id FROM main_date_family
UNION ALL
SELECT id_file FROM main_date_non_family
) AS t
WHERE t.id IN (SELECT A.id_file
FROM main_date_family A
INNER JOIN main_date_non_family B ON A.id_file = B.id_file
)
GROUP BY t.id
解释的想法:
- 获取所有常见的
id_file
s。 - 现在结合这两张表中的所有
id_file
。请注意, 这个组合将所有id_file
从这两个表中保存为 ,尽管它是一张表。 - 现在只能从第二步获得那些
id_file
s,这是第一步在 中找到的。 - 现在唯一剩下的就是
GROUP BY
&COUNT
。 我猜 你知道还有什么是group by
能否请您仔细检查您的预期产出?为什么'2'在预期输出中计数为'4'? – 1000111
'| 14 | 3 |'是否预计?它不应该是'| 14 | 5 |'? – 1000111
是的,你是对的,它必须是5 –