可能的重复:
为什么 sql 查询会有“where 1 = 1”
为什么有人会在 SQL 子句中使用 WHERE 1=1 AND <conditions>?
我在不同的查询示例中看到了很多,它可能适用于所有 SQL 引擎。
如果有一个没有定义条件的查询,人们(特别是 ORM 框架)通常会添加始终为真条件WHERE 1 = 1
或类似的东西。
所以而不是
SELECT id, name FROM users;
他们使用
SELECT id, name FROM users WHERE 1 = 1;
我能想到的唯一可能原因是,如果您动态添加条件,则不必担心剥离初始条件,但如果查询中存在实际条件,AND
该条件仍然经常被剥离。1 = 1
CakePHP 的实际示例(由框架生成):
(无条件)
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` = 'me@example.com'
LIMIT 1;
是否有任何理由添加该额外条件?