2016-02-23 80 views
1

這是我輸入的內容,我必須用「NOT IN」替換EXCEPT。所以這解決了一個錯誤,但現在它返回多於一行。我不確定那是多麼糟糕。我剛剛開始弄清楚MySQL並嘗試從本書中獲取示例。MySQL多於1行錯誤

SELECT S.sname 
FROM suppliers S 
WHERE (
    (SELECT P.pid FROM parts P) NOT IN 
    (SELECT C.pid FROM catalog C WHERE C.sid = S.sid) 
); 

ERROR 1242 (21000): Subquery returns more than 1 row 
+0

感謝@IkeWalker的編輯。 – user3038573

回答

0
SELECT S.sname 
FROM suppliers S 
WHERE NOT EXISTS(
SELECT P.pid FROM parts P, catalog C 
WHERE P.pid = C.pid AND C.sid = S.sid) 
); 
+0

返回空集。另外它不會從目錄C – user3038573

+0

中選擇C.pid您想實現的目標? Pid在零件中但不在目錄中?與供應商相關(或是否)達到預期結果? –

+0

有零件ID,供應商ID和產品目錄ID。試圖找到提供每個部件的供應商的名稱(發現它的目錄) – user3038573