我有两个表,具有相同的结构,例如:table"first",列'a','b','c'和表'second'具有相同的列.如何找到这两个表之间的差异?当然,我可以在python上创建一些脚本,这将创建set(a)-set(b),但我认为在mysql中有一些方法可以做到这一点.
UPD:
Table 'first'
a |b |c
====|====|====
a1 |b1 |c1
a2 |b2 |c2
a3 |b3 |c3
Table 'second'
a |b |c
====|====|====
a2 |b2 |c2
a3 |b3 |c3
a4 |b4 |c4
Run Code Online (Sandbox Code Playgroud)
我需要的结果是这样的:
Table 'first-second'
a |b |c
====|====|====
a1 |b1 |c1
Run Code Online (Sandbox Code Playgroud)
要么
Table 'second-first'
a |b |c
====|====|====
a4 |b4 |c4
Run Code Online (Sandbox Code Playgroud)
你可以尝试外连接.例如,您可以找到表中first存在但在second此表中不存在的行(未测试):
SELECT first.a, first.b, first.c FROM first LEFT JOIN second USING(a,b,c)
WHERE second.a IS NULL
Run Code Online (Sandbox Code Playgroud)
连接为您提供了一个包含所有行的表first,如下所示:
first.a first.b first.c second.a second.b second.c
a1 b1 c1 NULL NULL NULL
a2 b2 c2 a2 b2 c2
Run Code Online (Sandbox Code Playgroud)
现在,您只需查询行second.a IS NULL以查找不存在的行second.
性能可能很差,因为您必须加入所有列.
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |