【发布时间】:2021-12-28 18:12:35
【问题描述】:
我无法理解为什么我的两个 SQL 查询输出的高级管理人员计数结果不同,而我预计它们是相同的。
SELECT COMPANY.Company_Code, COMPANY.Founder, COUNT(SENIOR_MANAGER.Senior_Manager_Code)
FROM COMPANY INNER JOIN SENIOR_MANAGER
ON SENIOR_MANAGER.COMPANY_CODE = COMPANY.COMPANY_CODE
GROUP BY COMPANY.COMPANY_CODE, COMPANY.FOUNDER;
此 SQL 查询试图找出不同公司有多少高级管理人员,结果如下:
C1 Angela 5
C10 Earl 2
C100 Aaron 4
C11 Robert 1
C12 Amy 6
但是,当我在另一个使用两个内部联接的查询中使用相同的条件时,我会得到另一组结果。这是我的查询:
SELECT COMPANY.COMPANY_CODE, COMPANY.FOUNDER, COUNT(LEAD_MANAGER.LEAD_MANAGER_CODE),
COUNT(SENIOR_MANAGER.SENIOR_MANAGER_CODE)
FROM COMPANY INNER JOIN LEAD_MANAGER
ON COMPANY.COMPANY_CODE = LEAD_MANAGER.COMPANY_CODE
INNER JOIN SENIOR_MANAGER
ON SENIOR_MANAGER.COMPANY_CODE = COMPANY.COMPANY_CODE
GROUP BY COMPANY.COMPANY_CODE, COMPANY.FOUNDER;
结果如下:
C1 Angela 10 10
C10 Earl 2 2
C100 Aaron 8 8
C11 Robert 1 1
C12 Amy 12 12
第四列是高级经理的人数,由于某种原因与第三列的值相同,但与我显示的第一个查询的值不同。有人可以解释为什么结果不同吗?我怀疑这可能是因为我错误地使用了内部连接?
我期望的结果是第四列显示第一个查询中的值。
【问题讨论】:
标签: mysql sql select inner-join cartesian-product