在MySQL中,我使用此查询删除一些行:
DELETE
FROM test
WHERE (id1, id2) IN ((1, 1), (2,1), (3,1))
*复合PK(id1,id2)
此查询不适用于MsSQL。任何人都可以告诉我在MsSQL上的等效查询
答案 0 :(得分:3)
这应该有用,但它有点冗长:
DELETE
FROM test
WHERE id1 IN (1, 2 , 3) AND id2 = 1
答案 1 :(得分:3)
虽然可能有更好的方法来解决您的问题,但如果您真的想使用行构造函数,则可以简单地加入使用值构造函数创建的虚拟实体。这是一个例子:
创建一些测试数据
create table test (
id1 int not null,
id2 int not null,
primary key clustered (id1, id2));
insert test (
id1,
id2)
select top (100)
id1,
id2
from (
select distinct
id1 = abs(checksum(newid())) % 10,
id2 = abs(checksum(newid())) % 10
from sys.columns a
cross join sys.columns b) c;
使用行构造函数删除行
delete a
from test a
join (
values (1, 1), (2, 1), (3, 1)) b(id1, id2)
on a.id1 = b.id1
and a.id2 = b.id2;
上述DML查询应导致从test
删除三行。