SQL Query用于比较不同表中的列

时间:2014-09-09 23:35:00

标签: sql sqlite

我的TableA和TableB包含相同的列,但它们具有不同的记录。

如何找出" UniqueID"不是在TableA中,而是在TableB中?

我一直在做

select tc.uniqueid, td.uniqueid
from tab1c as tc
left join tab2c as td
where tc.uniqueid != td.uniqueid;

但它似乎不正确。

3 个答案:

答案 0 :(得分:2)

使用左连接:

select tc.uniqueid, td.uniqueid
from tab1c as tc
left join tab2c as td
on tc.uniqueid = td.uniqueid
where td.uniqueid = NULL; --Will get all uid in tab1c and not in tab2c

同样有效且更易读的方式是NOT EXISTS

select tc.uniqueid
from tab1c as tc
WHERE NOT EXISTS (SELECT * FROM tab2c as td
                  WHERE tc.uniqueid = td.uniqueid)

答案 1 :(得分:1)

以下查询将找到tableA

中没有的所有唯一ID
SELECT UNIQUEID FROM TABLEB WHERE  UNIQUEID NOT IN (SELECT DISTINCT UNIQUEID FROM TABLEA);

答案 2 :(得分:1)

也许不是最有效的方式,但您可以使用EXCEPT

    SELECT UNIQUEID
    FROM tab1c

    EXCEPT

    SELECT UNIQUEID
    FROM tab2c