SQL-запрос для поиска пропущенных строк между двумя связанными таблицами - PullRequest
27 голосов
/ 30 сентября 2010

У меня есть две таблицы:

Таблица A

  • ID
  • ABC_ID
  • VAL

Таблица B

  • ID
  • ABC_ID
  • VAL

Эти две таблицы напрямую связаны друг с другом через столбец ABC_ID.

Я хочу найти все значения столбца VAL в таблице A, которые не представлены в таблице B для того же ABC_ID.

1 Ответ

46 голосов
/ 30 сентября 2010
SELECT A.ABC_ID, A.VAL WHERE NOT EXISTS 
   (SELECT * FROM B WHERE B.ABC_ID = A.ABC_ID AND B.VAL = A.VAL)

или

SELECT A.ABC_ID, A.VAL WHERE VAL NOT IN 
    (SELECT VAL FROM B WHERE B.ABC_ID = A.ABC_ID)

или

SELECT A.ABC_ID, A.VAL LEFT OUTER JOIN B 
    ON A.ABC_ID = B.ABC_ID AND A.VAL = B.VAL WHERE B.VAL IS NULL

Обратите внимание, что эти запросы не требуют, чтобы ABC_ID был в таблице B вообще.Я думаю, что делает то, что вы хотите.

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