获取两个表的唯一行

时间:2012-09-21 01:23:25

标签: mysql sql join

我想比较两个具有相同列但行数不同的表。如何找到每个表的唯一行?我发现了一些连接教程,但它需要主键来连接两个表,我的样本表彼此没有关系。

样本表:

TableA
Id | Name
1 | Person1
2 | Person2
3 | Person3
4 | Person4

TableB
Id | Name
1 | Person1
2 | Person2
4 | Person4

Sample result:
Id | Name
3 | Person3

Optional result:
Id | Name | Table
3 | Person3 | TableA

2 个答案:

答案 0 :(得分:3)

由于MySQL缺少FULL JOIN,您仍然可以使用LEFT or RIGHT加入UNION来模拟它。尝试,

SELECT  a.* , 'TableA' as `Table`
FROM    tableA a
        LEFT JOIN tableB b
            ON a.id = b.id AND
               a.name = b.name
WHERE   b.id IS NULL
UNION
SELECT  d.*, 'TableB' as `Table`
FROM    tableA c
        RIGHT JOIN tableB d
            ON c.id = d.id AND
               c.name = d.name
WHERE   c.id IS NULL

SQLFiddle Demo

答案 1 :(得分:0)

您可以使用简单查询

select * from tableA,tableB where tableA.Name Not In tableB.Name And tableB.Name Not In tableA.Name