выбрать значения из таблицы, где исключить значения в другой таблице - PullRequest
13 голосов
/ 07 января 2012

Я использую базу данных PostgreSQL. Я хочу получить значения столбца из таблицы, исключив значения, существующие в другой таблице.

select id from mytable where exclude(select id from another table)

В первой таблице доступен идентификатор:

101,102,103,104,105

Во второй таблице доступен идентификатор:

101104

Я хочу результат:

102,103,105 (excluded values exist in second table)

Как написать Query для этого?

Ответы [ 3 ]

21 голосов
/ 07 января 2012

Попробуйте

select id
from mytable
where id not in (select id from another_table);

или

select id
from mytable
except
select id
from another_table;
11 голосов
/ 08 января 2012

Использование функции LEFT JOIN для IS NULL также возможно:

SELECT 
  id
FROM 
  mytable
    LEFT JOIN another_table ON mytable.id = another_table.id
WHERE
  another_table.id IS NULL;
0 голосов
/ 29 июня 2018

Я попробовал решение из "user554546" Не уверен, что происходило в моем примере, но мне пришлось выбрать Distinct, так как, если у меня есть два значения в another_table, моя таблица будет дважды показывать нефильтрованные значения.

Итак, предположим, что другая_таблица имела

|ID|
|03|
|04|
|06|

main_table имела

|ID|
|01|
|02|
|03|
|04|
|05|
|06|

После выполнения запроса main_table будет отображаться следующее

|ID|
|01|
|01|
|01|
|02|
|02|
|02|
|05|
|05|
|05|

Кажется, это решает определенная проблема, но есть ли идеи, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...