Ответ
Условия в SQL формируются с помощью трех групп операторов в предложении WHERE, HAVING или ON.
1. Операторы сравнения
Используются для сравнения значений.
=— равно.<>или!=— не равно.>— больше.<— меньше.>=— больше или равно.<=— меньше или равно.
2. Логические операторы
Комбинируют несколько условий.
AND— истинно, если оба условия истинны.OR— истинно, если хотя бы одно условие истинно.NOT— инвертирует результат условия.
3. Специальные операторы для работы с наборами и шаблонами
BETWEEN— проверяет вхождение в диапазон (включительно).IN— проверяет вхождение в список значений.LIKE/ILIKE— сопоставление строки с шаблоном (с использованием%и_).ILIKE— регистронезависимый (в некоторых СУБД).IS NULL/IS NOT NULL— проверка на NULL (использовать= NULLнекорректно!).EXISTS— проверяет существование строк в подзапросе.
Пример комплексного условия:
SELECT id, name, age, city, registration_date
FROM users
WHERE age >= 18
AND city IN ('Moscow', 'London', 'Berlin')
AND (registration_date BETWEEN '2023-01-01' AND '2023-12-31')
AND email IS NOT NULL
AND name LIKE 'A%' -- Имена, начинающиеся на 'A'
AND NOT status = 'banned';
Ключевой момент: Условия вычисляются с учетом приоритета (NOT > AND > OR). Всегда используйте скобки () для явного задания логики, особенно с OR.
Ответ 18+ 🔞
Э, слушай сюда, про SQL условия, а то потом будешь плакать, что запрос не работает, а я тебе говорил, блядь!
Вот смотри, вся эта хуйня с WHERE, HAVING или ON — это просто три места, куда ты можешь впендюрить свои проверки. А сами проверки делятся на три банды, как в плохом районе.
Первая банда — операторы сравнения. Тупые как пробка, но без них нихуя.
=— равно. Банально, но свято.<>или!=— не равно. Одно и то же, выбирай, что нравится, как тапки.>,<,>=,<=— больше, меньше и прочая хуйня. Тут всё понятно, даже мартышке.
Вторая банда — логические операторы. Вот тут уже начинается магия, а иногда и пиздец.
AND— работает, только если ОБА условия правда. Жёсткий стукач, блядь.OR— сработает, если ХОТЯ БЫ ОДНО условие правда. Похуист, одним словом.NOT— просто берёт результат и говорит: «Да пошёл ты нахуй, всё наоборот». Инвертирует, короче.
Третья банда — спецназ для сложных случаев. Без них — как без рук, а иногда и без головы.
BETWEEN— «Дай мне всё ОТ и ДО». Включая границы, не забывай!IN— «Дай мне всё из этого списка». Удобно, не надо городить кучуOR.LIKE/ILIKE— для поиска по шаблону.%— любое количество букв,_— одна буква.ILIKE— тот же урод, но не смотрит на регистр (в некоторых базах, не везде, сука!).IS NULL/IS NOT NULL— ВНИМАНИЕ, ЕБАНОЕ ПРАВИЛО: чтобы проверить на NULL, надо использовать ИМЕННО ЭТИ операторы.= NULL— это пиздец и неправильно, запомни нахуй!EXISTS— хитрая жопа. Проверяет, есть ли хоть что-то в результатах подзапроса. Мощная штука, но мозг иногда выносит.
Вот тебе пример, как это всё вместе выглядит, чтобы не было, как у того немого Герасима, который только «Му-му» мог сказать:
SELECT id, name, age, city, registration_date
FROM users
WHERE age >= 18 -- Совершеннолетние, блядь
AND city IN ('Moscow', 'London', 'Berlin') -- Только из этих городов, падлы
AND (registration_date BETWEEN '2023-01-01' AND '2023-12-31') -- Зарегились в прошлом году
AND email IS NOT NULL -- Чтобы почта была, а то куда мы им письма пошлём?
AND name LIKE 'A%' -- Имена на букву 'A', допустим
AND NOT status = 'banned'; -- И чтобы не забаненные, епта!
И ГЛАВНОЕ, НА ЧЁМ ВСЕ ГОРЯТ, КАК КОТЛЕТЫ: Порядок действий! Сначала NOT, потом AND, потом OR. Приоритет, блядь! Чтобы не получилось неожиданной хуйни, ОБЯЗАТЕЛЬНО оборачивай в скобки (), особенно когда используешь OR. Иначе SQL сделает по-своему, а ты потом будешь чесать репу и думать, что за мудак это писал. А мудак — это ты, потому что скобки не поставил!