我有两个不同的表,其中包含SELECT
A.name 'account name',
D.name 'deck name owned by account',
T2.name 'type name of the DECK',
C.name 'card name contained in deck',
T.name 'type name of the CARD'
FROM account A
JOIN deck D ON A.id=D.owner
JOIN deck_card DC ON D.id=DC.deck
JOIN card C ON DC.card=C.id
JOIN `type` T ON C.`type`=T.id
JOIN `type` T2 ON D.`type`=T2.id
和ID
列(如下所示)。如何从name
中table1
中ID
不存在的table2
中检索记录?
表1
ID name
--- -----
1 ani
2 bni
3 cini
4 dani
表2
ID name
--- -----
1 ani
5 eni
输出
ID name
--- -----
2 bni
3 cini
4 dani
答案 0 :(得分:0)
在大多数RDBMS数据库中,存在查找这类记录的功能。有不同的方法来识别记录(使用LEFT JOIN或NOT IN或提供类似NOT EXISTS
的函数),下面提到的选项比其他选项更高效:
SELECT t1.*
FROM table1 t1
WHERE NOT EXISTS (
SELECT t2.*
FROM table2 t2
WHERE t2.id = t1.id
)
答案 1 :(得分:-1)
SQL:MINUS Operator
SELECT name FROM table1 MINUS SELECT name FROM table2;
这可能会有所帮助