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条记录。是影响它的“OR”吗?
我有4个记录(需要排除)和2个日期,我的查询不起作用。这是为什么?我做的事情非常愚蠢吗?
答案 0 :(得分:3)
我相信您打算使用AND
逻辑运算符。 e.g。
SELECT *
FROM Table_Name
WHERE
[DateOfLastTransaction] != @p29
AND [DateOfLastTransaction] != @p30
所有内容都将通过OR
运算符返回,因为[DateOfLastTransaction]
可能符合第一次逻辑比较但在第二次运算时无效。
答案 1 :(得分:2)
考虑这个陈述
SELECT * FROM TABLE_NAME
WHERE
[DateOfLastTransaction] <> @p29
OR [DateOfLastTransaction] <> @p30
除非[DateOfLastTransaction]为空
或@ p29 = @ p29 = [DateOfLastTransaction]
它将永远返回true
如果日期不匹配 true或true计算结果为true
如果日期与@ p29相匹配 false或true评估为true
如果日期与@ p30相符 true或false评估为true