SQL Statement Question - Как получить записи таблицы, в которой первичный ключ не существует в другой таблице, в качестве внешнего ключа - PullRequest
1 голос
/ 07 августа 2010

У меня есть таблица (TableA), где первичный ключ существует как внешний ключ в другой таблице (TableB).Я пытаюсь написать запрос SQL (я использую SQL Server 2005), который найдет все записи в TableA, где первичный ключ не существует в TableB в качестве внешнего ключа (скажем, присоединение к TableAID).Я подозреваю, что это будет использовать внешнее соединение, но я боролся.Кто-нибудь может помочь новичку в SQL?

Ответы [ 4 ]

4 голосов
/ 07 августа 2010

Вы можете использовать НЕ СУЩЕСТВУЕТ

SELECT columnlist
FROM TableA
WHERE NOT EXISTS(
   SELECT * FROM TableB
   WHERE TableB.column = TableA.column)
4 голосов
/ 07 августа 2010
SELECT A.*
FROM TableA AS A
LEFT JOIN TableB AS B ON (A.ID = B.TableAID)
WHERE B.TableAID IS NULL
2 голосов
/ 07 августа 2010

Это почти естественный язык в SQL («ГДЕ НЕ СУЩЕСТВУЕТ»):

SELECT A.*
FROM TableA AS A
WHERE NOT EXISTS ( SELECT 1
                   FROM TableB
                   WHERE TableA.ID = B.TableAID
                 )
0 голосов
/ 07 августа 2010
Select * from TableA 
where 
 TableA.TableAID not in (select TableB.TableAID from TableB)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...