Top.Mail.Ru
Ответы

AND и OR в SQL PHP

Всем привет! Подскажите пожалуйста как в одном запросе sql php использовать и and и or (а именно, где or, отдельно от and надо брать в скобки или нет?

По дате
По рейтингу
Аватар пользователя
Новичок

Если эти операторы встречаются в одном выражении, то сначала выполняется NOT, потом AND и в конце OR. Где бы они ни стояли.
Скобки нужны для изменения этой логики, ну или для лучшего визуального восприятия.

Аватар пользователя
Мастер

В зависимости от того, что вы хотите получить, вы можете использовать разный синтаксис SQL-запроса.

Например, вы хотите получить из таблицы people всех людей, которых зовут John, которые живут в США (USA) или Канаде (Canada):

1
 SELECT * FROM `people` WHERE `name`='John' AND (`country`='USA' or `country`='Canada') 

В этом случае логика такая же, как в математике: действия в скобках выполняются первыми. Сначала СУБД выберет людей, которые живут в США или Канаде, а после – среди этих людей выберет тех, которых зовут Джон.

Если использовать конструкцию без скобок:

1
 SELECT * FROM `people` WHERE `name`='John' AND `country`='USA' or `country`='Canada' 

то выборка будет выполняться по порядку написания условий, то есть сначала выполнится выборка "все с именем Джон И живущие в США", а после: "ИЛИ любой, кто живёт в Канаде".

Грубо: та же математика. Действия выполняются по порядку, но те, что в скобках – выполняются раньше. Если скобки внутри скобок – это ещё сильнее повышает приоритет выполнения операции.