COUNT多条记录MYSQL

COUNT多条记录MYSQL

问题描述:

我有这样的两个MySQL表COUNT多条记录MYSQL

main_date_family

enter image description here

main_date_non_family

enter image description here

我想凑NT重复记录的两个表中这样

--------------------- 
| id_file | c | 
--------------------- 
| 1  | 3 | 
| 6  | 2 | 
| 14  | 5 | 
+0

能否请您仔细检查您的预期产出?为什么'2'在预期输出中计数为'4'? – 1000111

+0

'| 14 | 3 |'是否预计?它不应该是'| 14 | 5 |'? – 1000111

+0

是的,你是对的,它必须是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 

解释的想法:

  1. 获取所有常见的id_file s。
  2. 现在结合这两张表中的所有id_file。请注意, 这个组合将所有id_file从这两个表中保存为 ,尽管它是一张表。
  3. 现在只能从第二步获得那些id_file s,这是第一步在 中找到的。
  4. 现在唯一剩下的就是GROUP BY & COUNT我猜 你知道还有什么是group by
+0

非常感谢你,但我需要两张表中存在的记录,如果一张表中存在一条记录,而另一条记录不存在,我不需要它。 –

+0

但您最初的要求并没有说明这一点。好的,我正在花时间更改查询。 – 1000111

+0

看编辑部分下的答案。 – 1000111