select语句返回位于独特城市和州中的每个供应商的名称,城市和州(即排除与另一个供应商具有相同城市和州的供应商)SQL Server - 相关子查询/自加入
SELECT
VendorName, VendorCity, VendorState
FROM
Vendors
WHERE
VendorState + VendorCity NOT IN (SELECT VendorState + VendorCity
FROM Vendors
GROUP BY VendorState + VendorCity
HAVING COUNT(*) > 1)
ORDER BY
VendorState, VendorCity;
备选答案
SELECT
VendorName, VendorCity, VendorState
FROM
Vendors AS Vendors_Main
WHERE
VendorCity + VendorState NOT IN (SELECT VendorCity + VendorState
FROM Vendors AS Vendors_Sub
WHERE Vendors_Sub.VendorID <> Vendors_Main.VendorID)
ORDER BY
VendorState, VendorCity;
我明白了第一个答案,而不是替代查询。混乱点:下面的行不会返回0行,因为它们引用同一个表而没有额外的where子句?
WHERE Vendors_Sub.VendorID <> Vendors_Main.VendorID)