我有一个在 Access 中的数据库(你可以得到它 link text )。如果我跑
SELECT DISTINCT Spl.Spl_No, Spl.Spl_Name
FROM Spl INNER JOIN Del
ON Spl.Spl_No = Del.Spl_No
WHERE Del.Item_Name <> 'Compass'
它提供了从未交付过指南针的供应商的名称。然而,你可以用一个子查询来做到这一点。到目前为止,我自己和其他一些人都没能把它做好。
我确实接近了以下结果,直到我们添加了更多供应商然后它停止工作
SELECT SPL.SPL_Name
FROM SPL
LEFT JOIN DEL ON Del.SPL_No = SPL.SPL_No
WHERE (DEL.Item_Name<>"Compass") OR (DEL.Item_Name IS NULL)
GROUP BY SPL.SPL_Name
HAVING COUNT(DEL.SPL_No) = 0
所以问题是:这是否可能与子查询有关。
最佳答案
我想我会去:
SELECT SELECT Spl_No, Spl_Name
FROM Spl
WHERE Spl_No NOT IN
(SELECT Spl_No FROM Del
WHERE Item_Name = 'Compass')
关于SQL 子查询与连接混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435540/