Отсечение строк и сортировка

Логические операторы

В предложении WHERE могут присутствовать логические операторы

  • AND - логическое И;
  • OR - логическое ИЛИ;
  • NOT - отрицание.

AND - логическое И

Начнем с AND. Например, запрос для получения информации о сотруднице, работающей в магазине с идентификатором 200, занимающей должность 'SELLER' по имени Наталия:

SELECT *
  FROM employee
 WHERE store_id = 200
   AND rank_id = 'SELLER'
   AND first_name = 'Наталия'
#employee_idstore_idrank_idfirst_namelast_namemiddle_namemanager_id
126200SELLERНаталияПотаповаЕвсеевна12

OR - логическое ИЛИ

Если хотя бы одно из условий истинно, то все выражение истинно. Например, сотрудников с должностями 'CHIEF' и 'DIRECTOR' , т.e. должность равна 'CHIEF' ИЛИ должность равна 'DIRECTOR', можно получить запросом:

SELECT employee_id,
       store_id, 
       last_name,
       first_name
  FROM employee
 WHERE rank_id = 'CHIEF'
    OR rank_id = 'DIRECTOR'
#employee_idstore_idrank_idlast_namefirst_name
11100CHIEFИвановАлексей
22200CHIEFМаккормикКенни
33400CHIEFМатвееваАнна
44500CHIEFШмидтРоман
55600CHIEFСухоруковВиктор
66800CHIEFНемцоваСветлана
77900CHIEFВершининаОльга
89301DIRECTORАнтоновСергей

P.S. Можно улучшить, используя IN, но об этом позже.

NOT - отрицание

Логический оператор NOT отображает запись, если условие(я) НЕ ИСТИНА. К примеру, чтобы получить всех сотрудников, кроме занимающих должности 'CHIEF' и 'DIRECTOR', необходимо выполнить запрос:

SELECT *
  FROM employee
 WHERE NOT (
         rank_id = 'CHIEF' 
      OR rank_id = 'DIRECTOR')
#employee_idstore_idrank_idfirst_namelast_namemiddle_namemanager_id
18201CEOПетрКорсаковКонстантинович
210302GENERAL_MANAGERВладКонтурСеменович
311100MANAGERГлебТарасовАвдеевич
........................
    ПредыдущаяСледующая