我正在写一个查询,该查询将显示哪些慈善机构没有捐赠。到目前为止,这是我的脚本:
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 join
和where
怎么样:
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/