如何从ID列表中的ID表中删除?


91

如果我有一个ID列表(1、4、6、7)和一个db表,我想删除该列表中ID所在的所有记录,该怎么办?

Answers:


168

您的问题为此几乎拼写了SQL:

DELETE FROM table WHERE id IN (1, 4, 6, 7)

@jayarjo:任何差异可能都可以忽略不计,而且我不认为任何理由进行逐一删除都会更有效。
Matti Virkkunen 2010年

这正是性能可能会带来便利的地方。例如,我已经有一些函数可以逐个地做到这一点。但是,如果有提高性能的机会,我可以编写一些其他代码,否则可能不值得。
jayarjo 2010年

8
几乎可以肯定,在Oracle或PostgreSQL上,一对一的速度会变慢。将SQL操作分解为许多较小的操作是获得不良性能的一种好方法。
大卫·奥尔德里奇

1
我发现In子句中的10,000个项目花费了大约200秒,但是1000个花费了3秒(或者在标准化比较中为30秒)。大小很重要。
ohmusama

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.