删除oracle中的多行

时间:2017-08-17 12:18:42

标签: oracle

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个删除语句吗?

3 个答案:

答案 0 :(得分:2)

你可以这样做:

cmd='find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done'
echo $cmd

答案 1 :(得分: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);

当然,在子查询中,您可以使用任何select(例如来自全局临时表)。

答案 2 :(得分:-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);
相关问题