我们有两个表,我们想要获取table1中不在table2中的数据

时间:2017-01-29 05:09:33

标签: rdbms

我有两个不同的表,其中包含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列(如下所示)。如何从nametable1ID不存在的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

2 个答案:

答案 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;

这可能会有所帮助