可能重复:
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?
我正在开发一个经常有
的代码库 where 1=1
通常,这些查询很复杂且难以阅读。因此,纯粹为重构分解查询语义并不总是可行的。我的直觉是,这总是不必要的。在执行带有聚合函数的SELECT
以及某些列到组时,可能存在类似于Group By子句要求的where子句的要求。
是否需要这个?
答案 0 :(得分:16)
它使构建动态WHERE子句更容易......
WHERE
1=1
AND condition1
AND condition2
这样,如果您在添加条件时需要AND,则无需计算。您总是需要AND。
答案 1 :(得分:2)
我已经看到这样做,以便在构建动态查询时,您不必知道从哪里开始AND
子句,因为一切都在WHERE 1=1
之后
答案 2 :(得分:2)
如果您动态地为SQL添加限制,它非常有用,这样您就不必关心'WHERE'关键字,并且可以在添加限制的每个部分的开头使用'AND'。 (如果你愿意,我可以编写一个解释它的小例子。)
所以,是的,有1 = 1的合法用途。
答案 3 :(得分:1)
我认为这与能够编写长WHERE子句而不必考虑虚假AND语句有关。换句话说,它只是让代码看起来更好。非常肯定会得到优化。但是如果前面有一个OR,那就是SQL注入的气味:)
SELECT
...
WHERE 1=1
AND COND
AND ANOTHERCOND
AND THIRDCOND
-- AND COMMENTEDOUT
AND FIFTHCOND
答案 4 :(得分:1)
大多数案例开发人员使用它来轻松评论条件