SQL 子查询与连接混淆

标签 sql ms-access join

我有一个在 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/

相关文章:

java - 通过 UCanAccess 插入时出现 "invalid character value for cast"错误

sql - SQL中的NOT IN条件

跨 2 个数据库的 PostgreSQL 连接

java - 使用内连接将多个 sql 查询转为单个查询

sql - 如何通过存储过程中的SQL结果 "iterate"但避免使用游标?

php - SQL:获取属于 SUM 中不同值的正确 ID

sql - 在 T-SQL 中组合名字、中间名首字母、姓氏和后缀(无多余空格)

sql - Access 2010 VBA : If no records match filter, 显示 "No records found"

excel - 如何创建 Azure 文件存储文档的下载链接? PDF 有效,但 XLS 和 DOC 无效

mysql - 加入时出现重复列