是否有合理的理由在where子句中使用1 = 1?

时间:2011-12-02 16:42:05

标签: sql

  

可能重复:
  Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?

我正在开发一个经常有

的代码库

where 1=1

通常,这些查询很复杂且难以阅读。因此,纯粹为重构分解查询语义并不总是可行的。我的直觉是,这总是不必要的。在执行带有聚合函数的SELECT以及某些列到组时,可能存在类似于Group By子句要求的where子句的要求。

是否需要这个?

5 个答案:

答案 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)

大多数案例开发人员使用它来轻松评论条件