【问题标题】:COUNT multiple records from different tables MYSQLCOUNT来自不同表MYSQL的多条记录
【发布时间】:2016-12-28 18:42:29
【问题描述】:

我有这两个mysql表

ma​​in_date_family

ma​​in_date_non_family

我想统计两个这样的表中的重复记录

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

【问题讨论】:

  • 您能否再次检查您的预期输出?为什么2 在预期输出中有计数4
  • | 14 | 3 | 是预期的吗?不应该是| 14 | 5 |吗?
  • 是的,你没看错,一定是5

标签: php mysql count duplicates


【解决方案1】:

需要使用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_files。
  2. 现在合并这两个表中的所有id_files。请注意 这个组合包含这两个表中的所有id_files 虽然是一张桌子。
  3. 现在只获取来自第二步的id_files,它们位于 第一步。
  4. 现在剩下的唯一步骤是GROUP BYCOUNT 我猜 你知道group by是什么

【讨论】:

  • 非常感谢,但我需要两个表中存在的记录,如果一个记录存在于一个表中而另一个不存在,我不需要它。
  • 但是您最初的要求并没有说明这一点。好的,我正在花时间更改查询。
  • 非常感谢。你救了我。
  • 很高兴听到这个消息。并练习将答案标记为已接受,以便其他人发现它有用。 How to accept answer
猜你喜欢
  • 2012-10-27
  • 2013-09-22
  • 2023-02-25
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 2014-09-16
  • 1970-01-01
相关资源
最近更新 更多