1
我有以下查詢,完全按照我期望的方式工作。它用計數返回所有狀態。SQL左外部連接使用where子句減少了左外部連接的結果
SELECT
ProcessStatuses.Status,
COUNT(SecretProcesses.ProcessStatusID) AS Count
FROM
ProcessStatuses
LEFT OUTER JOIN
SecretProcesses ON ProcessStatuses.ProcessStatusID = SecretProcesses.ProcessStatusID
GROUP BY
ProcessStatuses.Status
結果:
Status Count
-------------
status1 0
status2 0
status3 0
status4 0
status5 0
status6 1
status7 0
status8 0
但是,如果我添加一個WHERE
子句來查詢它返回只有具有計數狀態。
例如
SELECT
ProcessStatuses.Status,
COUNT(SecretProcesses.ProcessStatusID) AS Count
FROM
ProcessStatuses
LEFT OUTER JOIN
SecretProcesses ON ProcessStatuses.ProcessStatusID = SecretProcesses.ProcessStatusID
WHERE
AreaID IN (21, 22, 23)
GROUP BY
ProcessStatuses.Status
結果:
Status Count
---------------
status6 1
這種失敗的做了左外的目的加入,因爲我希望能夠通過區域,他們居住在過濾結果,同時仍顯示所有可能的狀態。 where子句只返回具有值的狀態,而不是全部。
如果你使用會發生什麼計數(1)或而不是計數(SecretProcesses.ProcessStatusId)。 –