SQL内部联接,其中记录不存在

jbq*_*jbq 1 sql t-sql sql-server

我目前有两个表,我正在使用INNER JOIN子句查询.我的第一个标记为departments的表非常简单,只包含3个字段--deptID,deptName和companyID.我的第二个标记为departmentMemberships的表更简单,只包含2个字段--deptID和employeeID.我当前的SQL语句查询这两个表并返回所有deptID,deptName和每个部门的员工数.如果上述部门中没有任何员工,我的查询将不会返回部门.这是我目前的查询.

`SELECT departments.deptID, departments.deptName,
COUNT(departmentMemberships.deptID) AS employeeCount
FROM departmentMemberships
INNER JOIN departments
ON departmentMemberships.deptID = departments.deptID
WHERE departments.companyID = 1
GROUP BY departments.deptID, departments.deptName
ORDER BY departments.deptName ASC;`
Run Code Online (Sandbox Code Playgroud)

请原谅我对TSQL的经验不足,但我怎么能改变这个查询以返回所有部门,包括没有员工注册的部门?

非常感谢你

Bel*_*Bob 5

如上所述,将您INNER JOIN改为RIGHT OUTER JOIN.但我更喜欢LEFT JOIN自己; 它更容易遵循.即:

SELECT departments.deptID
     , departments.deptName
     , COUNT(departmentMemberships.deptID) AS employeeCount
FROM departments
LEFT OUTER JOIN departmentMemberships
ON departmentMemberships.deptID = departments.deptID
WHERE departments.companyID = 1
GROUP BY departments.deptID, departments.deptName
ORDER BY departments.deptName ASC
Run Code Online (Sandbox Code Playgroud)