2017-08-17 114 views
2
DELETE FROM MYTABLE WHERE ID = 1 and NAME ='xyz'; 
DELETE FROM MYTABLE WHERE ID = 2 and NAME ='abc'; 
DELETE FROM MYTABLE WHERE ID = 3 and NAME ='abc'; 

我有上面提到的多個刪除語句。我怎樣才能以較少的語句刪除它們。我需要寫100條刪除語句嗎?刪除oracle中的多行

回答

2

你可以這樣做:

delete from mytable 
where (id, name) in ((1, 'xyz'), 
        (2, 'abc'), 
        (3, 'abc')); 
+0

謝謝!這樣可行。 – PeaceIsPearl

0

你可以使用IN

DELETE FROM MYTABLE 
WHERE (ID, NAME) IN (SELECT 1 AS ID, 'xyz' AS NAME FROM dual UNION ALL 
        SELECT 2 AS ID, 'abc' AS NAME FROM dual UNION ALL 
        SELECT 3 AS ID, 'abc' AS NAME FROM dual); 

當然裏面的子查詢,你可以使用任何選擇(例如,從全局臨時表)。

-1
DELETE FROM MYTABLE 
    WHERE ID IN (1, 2, 3) AND NAME IN ('XYZ', 'ABC'); 

如果你的ID字段是唯一的,然後使用:

DELETE FROM MYTABLE WHERE ID IN (1, 2, 3); 
+0

答案的第一部分不一定準確。 'Id = 1'和'Name ='abc''的行符合你的標準,但不符合你的標準。 – JBC