基于匹配列比较两个SQL表

时间:2018-07-27 14:54:17

标签: sql

我有两个表T1和T2。 T1看起来像这样:

print (id)
print(text)

T2看起来像这样:

    ID      Type      Date
    _____________________________
    1       CA        11-17-2018
    2       BA        7-12-2018
    3       CA        4-1-2018
    4       BA        1-17-2018
    5       CA        9-30-2018

我需要一种方法来比较两个具有匹配ID的表中的行,并查看其他值是否匹配或它们是否不同。我只希望输出表包含具有不同值的那些ID,并显示这些值。预先感谢。

4 个答案:

答案 0 :(得分:2)

尝试一下:

SELECT T1.ID, T1.Type as T1Type, T2.Type as T2Type, T1.Date as T1Date, T2.Date as T2Date
FROM T1
INNER JOIN T2
ON T1.ID = T2.ID
WHERE T1.DATE <> T2.DATE
OR T1.Type <> T2.Type

请注意,此查询将仅返回两个表中都存在ID的结果。

答案 1 :(得分:1)

我认为您需要inner join and comparison

  select T1.*,T2.* from T1 inner join T2 on T1.id=T2.id
    where T1.Type!=T2.Type   and T1.Date!=T2.Date

答案 2 :(得分:0)

您将使用join

select t1.*, t2.*
from t1 join
     t2
     on t1.id = t2.id
where (t1.type <> t2.type) or (t1.date <> t2.date)

答案 3 :(得分:0)

您可以在其中一个表中放置一个外键,后者将引用另一个。

进行选择时,可以通过主键和外键将一个表与另一个表进行联接。

SELECT column FROM table1 JOIN table2 ON table1.id_pk = table2.id_fk WHERE condition;

在其中放置类似

的内容
WHERE (table1.id != table2.id) OR (table1.type != table2.type) OR (table1.date != table2.date);