Зачем сравнивать единицу с единицей?
Зачем сравнивать единицу с единицей? На днях коллега прислал запрос в переписке для забора данных при проверке тестового расчета. Код примерно такой (был прислан в одну строку): SELECT * FROM example_table WHERE 1=1 AND column1 = 'something' AND column2 = 'somethingelse' Вначале
18-02-2026 08:03 (МСК)
Зачем сравнивать единицу с единицей? На днях коллега прислал запрос в переписке для забора данных при проверке тестового расчета. Код примерно такой (был прислан в одну строку): SELECT * FROM example_table WHERE 1=1 AND column1 = 'something' AND column2 = 'somethingelse' Вначале удивился и не понял: зачем конструкция WHERE 1=1? Немного подумав, понял что это лайфхак для отладки запросов. В чем проблема без этого приема Обычно запрос имеет такой вид: SELECT * FROM example_table WHERE column1 = 'something' AND column2 = 'somethingelse' Давайте представим, что мы отлаживаем запрос и не всегда уверены в передаваемых параметрах и нам нужно закомментировать первое условие для проверки нашей некой гипотезы: SELECT * FROM example_table WHERE --column1 = 'something' AND column2 = 'somethingelse' Ошибка: Остался лишний AND, запрос некорректный. Придется вручную менять AND на WHERE и комментировать всю первую строку с первым условием , потом опять возвращать, если добавим новые условия. Как решает проблему WHERE 1=1? C использованием всегда истинного WHERE 1=1 такая проблема снимается. Можно комментировать условия не задумываясь о корректности работы скрипта: SELECT * FROM example_table WHERE 1=1 --column1 = 'something' AND column2 = 'somethingelse' Работает! Благодаря тому, что WHERE 1=1 всегда истинно, мы можем не думать про оформление комментариев и сдвиги. P.S. Пока набирал этот пример, заметил что в русской раскладке первые три буквы в WHERE - ЦРУ (Ц Р У). Буду считать, что это не просто совпадение😁 #dev_лайфхаки