2012-06-15 43 views
0

此語句返回錯誤00920-無效關係運算符。基於另一個表中的多個值刪除行

我確定這是我的語法,但我沒有看到它。如果任何代碼可以查看它,並指出我得到它的權利,我將不勝感激。

謝謝

DELETE FROM TABLE15 p 

    WHERE (p.item_id, p.product_id) IN 

      (SELECT S.item_id, S.product_id) 

       FROM TABLE14 S); 
+0

選擇行末尾的大括號是否是拼寫錯誤? – Stefan

+1

P.S.,我投票結束,因爲這實際上是您代碼中的一個錯誤;對未來的用戶並不真正有用。 – Ben

回答

2

你的括號內是狡猾......

DELETE FROM TABLE15 p 
    WHERE (p.item_id, p.product_id) IN 
      (SELECT S.item_id, S.product_id 
       FROM TABLE14 S 
        ); 

您需要刪除附加一個。由於額外的括號,錯誤是由於in未被正確解析而引起的。

+0

謝謝.... 16小時後必須是模糊的vsion ....只是沒有看到它。 –

0

試試這個:

DELETE FROM table15 p 
WHERE (p.item_id IN (SELECT S.item_id 
         FROM table14 S)) 
     OR ((p.product_id IN (SELECT S.product_id 
           FROM table14 S))); 
+0

在這種情況下,根據'item_id'和'product_id'的任何單個值刪除行,但問題的意圖是根據item_id和product_id的現有組合刪除。我不會低估它,因爲這是一個公平的嘗試,但我認爲它不符合OP的意圖。 –

相關問題