可能重复:
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?是否有合乎逻辑的理由在where子句中使用1 = 1?
我的工作,往往有
where 1=1
往往一个代码库,这些查询都是复杂而难以阅读。因此,纯粹针对重构来分解查询语义并不总是可行的。我的直觉是,这总是不必要的。在执行SELECT
带有聚合函数以及某些列组时,可能存在对where子句的要求类似于Group By子句的要求。
有没有这种需求?
可能重复:
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?是否有合乎逻辑的理由在where子句中使用1 = 1?
我的工作,往往有
where 1=1
往往一个代码库,这些查询都是复杂而难以阅读。因此,纯粹针对重构来分解查询语义并不总是可行的。我的直觉是,这总是不必要的。在执行SELECT
带有聚合函数以及某些列组时,可能存在对where子句的要求类似于Group By子句的要求。
有没有这种需求?
这使得构建的动态WHERE子句容易...
WHERE
1=1
AND condition1
AND condition2
这样,您就不用上班了如果您需要AND或不符合您的条件。你总是需要AND。
我认为它能够编写长的WHERE子句而不必考虑虚假的AND语句。换句话说,它只是为了让代码看起来更好。肯定会得到优化。然而,如果没有前面是一个OR,这是SQL注入的味道:)
SELECT
...
WHERE 1=1
AND COND
AND ANOTHERCOND
AND THIRDCOND
-- AND COMMENTEDOUT
AND FIFTHCOND
是的,但如果你的条件是“1 = 0”,那么你是从哪里开始的:) –
我已经看到了这样做,建立动态查询时,没有必须要知道从哪里开始AND
条款,因为一切后WHERE 1=1
它的有用的,如果你动态地添加限制您的SQL ,那样你就不必关心'WHERE'关键字,并且可以在添加限制的每个部分的开始处使用'AND'。 (如果你想我可以编一个小例子来解释它。)
所以,是的,有合法的使用1 = 1。
大多数使用它便于评论有条件的地方
是的,它是SQL注入容易的网站是非常有用的情况下,开发者) –
我已经看到了SO一次或两次,这个确切的问题,可能需要要更注意您输入问题标题时出现的建议问题列表。 –
其中1 = 1是一个100%的TRUE语句,所以无论你在SELECT语句中有没有行,它都会返回。 –