从一长串选项中删除

时间:2013-06-26 12:59:35

标签: sql sql-server sql-server-2008

我需要从MyTable中删除一些行,我通常使用“从MyTable中删除”然后使用“where”语句。我现在有大约100个不同的标准,基于一列删除行,使用“或”将永远。我可以使用一个列表来缩短它。下面是一个例子:

GroupInitials 

ABC

DEF

GHI

JKL

MNO

PQR

STU

VWX

AEF

UYT

我一直在做以下

Delete from MyTable

Where GroupInitials = 'ABC' or GroupInitials ='GHI' or GroupInitials = 'STU' ...

我有很长的要删除的内容列表,所以有什么方法可以简单地列出这些而不是使用100“或”语句

提前致谢

1 个答案:

答案 0 :(得分:4)

您可以使用IN谓词:

Delete 
from MyTable
Where GroupInitials IN('ABC', 'GHI', 'STU' ...);

或者您可以在临时表中写入这些值并使用相同的方法删除它们:

Delete 
from MyTable
Where GroupInitials IN(SELECT name from temptable);

并且通过这种方式,您可以JOIN代替IN