两个表的表结构设计是一样的,一个字段作为主键,通过什么方式可以查找出两个表中存在的不同的记录(就是这个主键的值在一个表存在,另外一个表不存在,是双向的),并把两个表不同的记录展示出来?
这两个表的数据量是挺大的,一天有百万级以上。有没有比较好的实现方式?
举例如下
table1 table2
id(主键) id(主键)
name name找出两个表中存在的不同的记录,就是这个主键的值在一个表存在,另外一个表不存在。
希望各位帮我想想,谢谢
这两个表的数据量是挺大的,一天有百万级以上。有没有比较好的实现方式?
举例如下
table1 table2
id(主键) id(主键)
name name找出两个表中存在的不同的记录,就是这个主键的值在一个表存在,另外一个表不存在。
希望各位帮我想想,谢谢
union
select B.* from B left join A on A.id=B.id where A.id is null
(select a.* from a
union all
select b.* from b) c
select 主键名
from (
select * from a
union all
select * from b
) t
group by 主键名
having count(*) = 1
--存在table1而不存在table2
select id from table1
except
select id from table2--存在table2而不存在table1
select id from table2
except
select id from table1