Исключить из набора результатов на основе условия

#sql #postgresql

Вопрос:

Учитывая следующую таблицу FOO;

 | Org | Status |
| X   | CLOSED |
| X   | OPEN   |
| Y   | OPEN   |
| Y   | CLOSED |
 

Как я могу выбрать все записи, кроме тех, где org = Y и статус = ЗАКРЫТ

Таким образом, набор результатов выглядит следующим образом:

 | Org | Status |
| X   | CLOSED |
| X   | OPEN   |
| Y   | OPEN   |
 

Комментарии:

1. где нет (организация = Y и статус = ЗАКРЫТО)

2. или, если организация <> y или статус <><> закрыта

3. Это становится немного сложнее, если организация или статус могут быть нулевыми.

Ответ №1:

Вы можете сделать это любым из следующих способов:

 WHERE (org, status) <> ('Y','CLOSED')
 
 WHERE NOT (org = 'Y' AND status = 'CLOSED')
 

Ответ №2:

 select * from Table where Org != 'Y' and Status != 'CLOSED'
 

Комментарии:

1. Это тоже работает, но я могу принять только один ответ. Спасибо!