2013-07-03 111 views
1

我想從表中刪除一個子查詢的結果。結果返回一個唯一的元組,並且目前我最終刪除的不僅僅是返回的結果,因爲我只檢查col1結果。SQL刪除與子查詢

DELETE FROM Table1 exTable 
WHERE exTable.col1 = ... AND exTable.col2 = ... 
(SELECT col1, col2 
FROM ...) 
+0

提供的信息不足。 – Romesh

+0

我想根據子查詢的結果刪除一行。我嘗試在(SELECT col1 FROM ...)中執行exTable.col1 EXISTS,但這隻會刪除基於col1的行。不知道如何確保它包含兩列。 – kshreve

回答

2

使用join來匹配多個列。

DELETE t1 
FROM Table1 t1 
inner join 
(
    select col1, col2 
    from other_table 
    where ... 
) t2 on t2.col1 = t1.col1 
    and t2.col2 = t1.col2 
+0

謝謝你這個工作。我使用此建議將子查詢的結果放入臨時表中。然後加入到臨時表中。我現在要花時間看看我是否可以在沒有臨時表的情況下做到這一點。 – kshreve

+0

您可以加入到子查詢中:'select * from(subquery)x on x.col1 = t1.col1'等等。 –