English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как использовать операторы AND и OR в предложении WHERE для фильтрации записей по нескольким условиям.
В предыдущей главе мы изучили, как использовать единственный условие с предложением WHERE для получения записей из таблицы. Но иногда вам нужно фильтровать записи по нескольким условиям, например, выбирать пользователей старше 30 лет из США, выбирать продукты с ценой менее 100 долларов и оценкой более 4, и т.д.
Оператор AND является логическим оператором, который комбинирует два условия и возвращает TRUE только тогда, когда результаты обоих условий TRUE. Обычно вSELECT,UPDATE,DELETEвWHEREИспользование оператора AND в предложении для формирования условий для фильтрации результатов.
SELECT column1_name, column2_name, columnN_name FROM table_name WHERE condition1 AND condition2;
Давайте посмотрим на несколько примеров, демонстрирующих их реальное действие.
Предположим, что в нашей базе данных есть таблица с именемemployeesиз таблицы, которая содержит следующие записи:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
Следующее SQL-выражение будет возвращать толькоemployeesВ таблице возвращается зарплата (salary) более 7000 иdept_idЭти сотрудники, чей номер отдела равен 5.
SELECT * FROM employees WHERE salary > 7000 AND dept_id = 5;
После выполнения вы получите следующий результат:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
Таким образом, оператор OR также является логическим оператором, который комбинирует два условия, но возвращает TRUE, если TRUE хотя бы одно из условий. Обычно в
Следующее SQL-выражение вернетemployeesВ таблице возвращается зарплата (salary) более 7000 илиdept_idВсе сотрудники, чей номер отдела равен 5.
SELECT * FROM employees WHERE salary > 7000 OR dept_id = 5;
В этот раз вы получите следующий результат:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
Вы также можете комбинировать AND и OR для создания сложных условных выражений.
Следующее SQL-выражение вернет сотрудников с зарплатой более 5000 иdept_idВсе сотрудники, чей номер отдела равен 1 или 5.
SELECT * FROM employees WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);
После выполнения上面的 запроса, вы получите следующий результат:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+