我正在写一个查询,该查询将显示哪些慈善机构没有捐赠。到目前为止,这是我的脚本:

SELECT c.Name
FROM CHARITY c INNER JOIN
     DONATION d
     ON c.CharityID = d.DonationID
EXCEPT
select C.CharityID, donationID
from charity c join
     DONATION d
     on c.CharityID = d.DonationID
ORDER BY d.DonationID asc


我的输出应指出:

name                        DonationID
------                       ------
St. Francis Home             NULL
Salvation Army               Null
.....
.....


但是我得到了:


  “消息205,第16层,状态1,第1行
  所有使用UNION,INTERSECT或EXCEPT运算符组合的查询在其目标列表中必须具有相同数量的表达式。”

最佳答案

left joinwhere怎么样:

SELECT c.Name
FROM CHARITY c LEFT JOIN
     DONATION d
     ON c.CharityID = d.DonationID
WHERE d.DonationID IS NULL;


我还要指出,将“ CharityID”连接到“ DonationID”的联接看起来确实很可疑。

关于mysql - 需要帮助使用SQL EXCEPT编写查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47044684/

10-09 00:27