我想比较两个具有相同列但行数不同的表。如何找到每个表的唯一行?我发现了一些连接教程,但它需要主键来连接两个表,我的样本表彼此没有关系。
样本表:
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
答案 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
答案 1 :(得分:0)
您可以使用简单查询
select * from tableA,tableB where tableA.Name Not In tableB.Name And tableB.Name Not In tableA.Name