我想比较两个列相同但行数不同的表。如何找到每个表中哪些行是唯一的?我找到了一些连接教程,但它需要主键来连接两个表,我的示例表彼此没有关系。
示例表:
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
最佳答案
由于 MySQL 缺少 FULL JOIN
,您仍然可以使用 LEFT 或 RIGHT
join 和 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
关于mysql - 获取两个表的唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523105/