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