Возможные дубликаты:
Почему будет ли запрос sql иметь где 1 = 1
Зачем кому-то использовать WHERE 1 = 1 AND ‹conditions› в предложении SQL?
Я много раз видел это в различных примерах запросов, и это касается, вероятно, всех механизмов 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` = '[email protected]'
LIMIT 1;
Есть ли причина для добавления этого дополнительного условия?