我有以下查询来返回客户使用的作业(访问次数)和他/她使用的独特的兽医数量。SQL上的WHERE子句JOIN
SELECT
customer.users_id AS CustID,
COUNT(VisitID) AS Jobs,
COUNT(DISTINCT VetID) AS Resources
FROM customer
LEFT JOIN visit ON customer.users_id = visit.CustID
GROUP BY customer.users_id
当我添加一个WHERE子句来获得只计算那些没有改期或取消访问,我的查询看起来是这样的。
SELECT
customer.users_id AS CustID,
COUNT(VisitID) AS Jobs,
COUNT(DISTINCT VetID) AS Resources
FROM customer LEFT JOIN visit ON customer.users_id = visit.CustID
WHERE visit.Status != 'Cancelled' AND visit.Status != 'ReScheduled'
GROUP BY customer.users_id
然而,在这种情况下,我只得到,虽然我使用的是左连接,为客户谁没有任何取消或重新安排访问,埃本的客户。
我该如何适应WHERE子句?
strickt01给予了正确的答案后再试。在外连接记录中,列是空的,因此比较列'Status'与'=','<>'或'!='永远不会是真的,因此您的外连接记录将被删除,是内连接。我想补充一点,'AND!='在'NOT IN'中更具可读性:'visit.Status NOT IN('Canceled','ReScheduled')'。 –
同意重做'NOT IN' – strickt01