mysql - 获取两个表的唯一行

标签 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

最佳答案

由于 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/

相关文章:

sql - SSIS : Using a variable as the name of a flat file destination

mysql - 是否可以在一个查询中更新同一列中的 2 个字段(mysql)

php - WordPress 自定义查询不返回结果

MySql 显示不在第二个表中的值

php - 如何在codeigniter中基于关联实体获取数据

java - 用java更新mysql

php - 不使用php函数加密mySql服务器上的数据

MYSQL选择用户名和日期对多次出现的所有记录

mysql - 无法在 Netbeans 8.2 中启动/连接到 MySQL 8.0

sql - 将相对周数列添加到 MySQl 结果