我正在使用sql server
在我的查询中我的条件是这样的:
WHERE
([status] IN (3,4) AND locid = 6 AND dtime >= getdate()-50)
OR
([status] = 5 AND DATEDIFF(n, CAST(DelDate AS DATETIME), GETDATE()) <= 3
AND locid = 6 AND dtime >= getdate()-50)
ORDER BY
paydate
而不是在哪种情况下,我可以将共同因素排除在外吗? 这还会影响我的查询中的其他内容吗? 我可以得到相同的结果吗? 如果我能解决这些共同因素,我该如何重写呢?
答案 0 :(得分:2)
如果你把共同因素排除在外,你必须正确地使用括号来分隔你的逻辑。它不会影响结果。
虽然数据库引擎非常智能,并且大多数时候数据库引擎的查询优化器会为您优化这种查询,但我对任何学习sql的人的建议是学会以正确的方式学习它。
WHERE
(
([status] IN (3,4))
OR
([status] = 5 AND DATEDIFF(n, CAST(DelDate AS DATETIME), GETDATE()) <= 3)
)
AND locid = 6 AND dtime >= getdate()-50