Операторы AND & OR в PostgreSQL

В PostgreSQL операторы AND и OR также называются связующими операторами. Они используются для сужения диапазона запроса при выборке данных. Мы можем использовать AND или OR, чтобы задать одно или несколько условий запроса.

AND

Оператор AND означает, что одно или несколько условий должны все одновременно быть истинными.

Синтаксис использования AND в предложении WHERE выглядит следующим образом:

SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];

Пример

Создайте таблицу COMPANY (Скачать SQL-файл COMPANY), с данными следующего содержания:

exampledb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

В следующем примере считываются все записи, в которых значение поля AGE больше 25 и значение поля SALARY больше или равно 65000:

exampledb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
 id | name  | age | address    | salary
----+-------+-----+------------+--------
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(2 rows)

OR

Оператор OR означает, что достаточно, чтобы было выполнено любое одно из нескольких условий.

Синтаксис использования OR в предложении WHERE выглядит следующим образом:

SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] OR [condition2]...OR [conditionN]

Создайте таблицу COMPANY (Скачать SQL-файл COMPANY), с данными следующего содержания:

exampledb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

В следующем примере считываются все записи, в которых значение поля AGE больше или равно 25 или значение поля SALARY больше или равно 65000:

exampledb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(4 rows)
Другие расширения