可能重复:
Why would a sql query have “where 1 = 1”
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?在SQL语句中使用WHERE 1 = 1的目的是什么?
我已经看到了很多不同的查询例子,它关系到可能是所有SQL引擎。
如果有一个没有条件定义的查询的人(特别是ORM框架)经常添加永远为真的条件WHERE 1 = 1
或类似的东西。
所以不是
SELECT id, name FROM users;
他们使用
SELECT id, name FROM users WHERE 1 = 1;
唯一可能的原因,我能想到的,如果要添加条件的动态,你不必担心剥离初始AND
但如果在查询中存在实际条件,那么经常会将此1 = 1
条件剥离。
实际的例子(由框架生成):
(没有条件)
SELECT `User`.`id`, `User`.`login`
FROM `users` AS `User` WHERE 1 = 1
ORDER BY `User`.`id` ASC;
(与条件)
SELECT `User`.`id`, `User`.`login`
FROM `users` AS `User`
WHERE `User`.`login` = '[email protected]'
LIMIT 1;
是否有任何理由增加额外的条件?
Dupe of http://stackoverflow.com/questions/517107/why-would-a-sql-query-have-where-1-1其中 – 2009-08-12 07:25:27