2017-08-17 48 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

関連する問題