2
SELECT * FROM TABLE_NAME
WHERE 
([DateOfLastTransaction] <> @p29) 
OR ([DateOfLastTransaction] <> @p30)

@p29='2012-11-30 00:00:00.000',  3 records
@p30='2012-04-17 00:00:00.000'  1 record

我从 SQL 探查器获得查询并删除了不必要的位。删除 OR 和 @p30 参数返回 3 条记录。是“或”影响它吗?

我有 2 个日期的 4 条记录(需要排除),但我的查询不起作用。这是为什么?我在做一些非常愚蠢的事情吗?

4

2 回答 2

3

我相信您的意思是使用AND逻辑运算符。例如

SELECT *
FROM Table_Name
WHERE 
     [DateOfLastTransaction] != @p29
     AND [DateOfLastTransaction] != @p30

一切都将与OR运算符一起返回,因为[DateOfLastTransaction]可能在第一个逻辑比较中合格,但在第二个逻辑比较中无效。

于 2013-04-17T16:37:07.463 回答
2

考虑这个陈述

SELECT * FROM TABLE_NAME
WHERE 
   [DateOfLastTransaction] <> @p29 
OR [DateOfLastTransaction] <> @p30

除非 [DateOfLastTransaction] 为 null
或 @p29 = @p29 = [DateOfLastTransaction]
它将始终返回 true

如果日期不匹配
true 或 true 评估为 true

如果日期匹配 @p29
false 或 true 评估为 true

如果日期匹配 @p30
true 或 false 评估为 true

于 2013-04-17T17:18:32.710 回答