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中的多行
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中的多行
你可以这样做:
delete from mytable
where (id, name) in ((1, 'xyz'),
(2, 'abc'),
(3, 'abc'));
你可以使用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);
当然里面的子查询,你可以使用任何选择(例如,从全局临时表)。
DELETE FROM MYTABLE
WHERE ID IN (1, 2, 3) AND NAME IN ('XYZ', 'ABC');
如果你的ID字段是唯一的,然后使用:
DELETE FROM MYTABLE WHERE ID IN (1, 2, 3);
答案的第一部分不一定准确。 'Id = 1'和'Name ='abc''的行符合你的标准,但不符合你的标准。 – JBC
谢谢!这样可行。 – PeaceIsPearl