我不會回答這個問題之前,OP會顯示他的努力,但對自我jarlh評論加入,不存在相信我可以證明這是可能的,只有這兩個選項中的一個:
自左連接:
SELECT DISTINCT t1.SuppliarName
FROM Tbl t1
LEFT JOIN Tbl t2 ON(t1.SuppliarName = t2.SuppliarName
AND t2.ProductName NOT IN('Truck', 'Computer'))
WHERE t1.ProductName IN('Truck', 'Computer')
AND t2.SuppliarName IS NULL;
不存在:
SELECT DISTINCT t1.SuppliarName
FROM Tbl t1
WHERE t1.ProductName IN('Truck', 'Computer')
AND NOT EXISTS(
SELECT 1
FROM Tbl t2
WHERE t1.SuppliarName = t2.SuppliarName
AND t2.ProductName NOT IN('Truck', 'Computer')
)
see fiddle here.
更新我可能誤解了這個問題。如果要求是用於計算機和卡車由供應商來賣的話,三自聯接或自聯接與不存在將這樣的伎倆:
三重自聯接:
SELECT DISTINCT t1.SuppliarName
FROM Tbl t1
INNER JOIN Tbl t2 ON(t1.SuppliarName = t2.SuppliarName
AND t1.ProductName <> t2.ProductName)
LEFT JOIN Tbl t3 ON(t1.SuppliarName = t3.SuppliarName
AND t3.ProductName NOT IN('Truck', 'Computer'))
WHERE t1.ProductName ='Truck'
AND t2.ProductName = 'Computer'
AND t3.SuppliarName IS NULL;
自聯接與不存在:
SELECT DISTINCT t1.SuppliarName
FROM Tbl t1
INNER JOIN Tbl t2 ON(t1.SuppliarName = t2.SuppliarName
AND t1.ProductName <> t2.ProductName)
WHERE t1.ProductName ='Truck'
AND t2.ProductName = 'Computer'
AND NOT EXISTS (
SELECT 1
FROM tbl t3
WHERE t3.SuppliarName = t1.SuppliarName
AND t3.ProductName NOT IN('Truck', 'Computer')
)
see fiddle here.
學校工作?你正在使用哪種dbms產品? (答案可能依賴於它...) – jarlh
是的學校工作,雖然在任何dbms查詢將在這裏工作,這將是最好的,如果它是SQL服務器 – user3729220
自我加入,不存在。 – jarlh