Tsql 如何避免SQL查询中的交叉映射,同时在Operator中使用2个列表?

Tsql 如何避免SQL查询中的交叉映射,同时在Operator中使用2个列表?,tsql,Tsql,我有一个HistoryRecords表,它有两列recordName和timeStamp。我必须根据这两个删除记录。我已使用以下查询删除了2条记录和: 问题是,上面的查询也会导致删除其他记录,因为记录名列表包含“abc”,时间戳列表包含“2010/10/25 17:43:3.0” 请告诉我任何可以防止这种额外的意外删除的方法。您应该将这些案例分离出来。不要合并 从历史记录中删除 其中(recName='abc'和timeStamp='2010…19:39') 或 (recName='def'和t

我有一个HistoryRecords表,它有两列recordName和timeStamp。我必须根据这两个删除记录。我已使用以下查询删除了2条记录和:

问题是,上面的查询也会导致删除其他记录,因为记录名列表包含“abc”,时间戳列表包含“2010/10/25 17:43:3.0”


请告诉我任何可以防止这种额外的意外删除的方法。

您应该将这些案例分离出来。不要合并

从历史记录中删除 其中(recName='abc'和timeStamp='2010…19:39') 或
(recName='def'和timeStamp='2010…17:43')

这可以正常工作,但与原始查询相比会对性能产生影响,因为我的实际场景需要批量删除LAC记录。(此外,如果您能告诉我SQL Server 2008中查询的最大可能长度,因为对于相同数量的输入记录,您的解决方案将导致查询长度增加)。
DELETE FROM HistoryRecords WHERE (recordName IN (N'abc',N'def') AND timeStamp IN (N'2010/10/20 19:39:20.0',N'2010/10/25 17:43:3.0'))