这个题目是在http://topic.youkuaiyun.com/u/20120820/23/C6B16CCF-EE15-47C0-9B15-77497291F2B9.html里面找到的,是一个帖子,查看了跟帖的大牛们的答复,自己也简单想了一下,如果我们只考虑两类表均在一个服务器上存储着,那么我觉得最好的方法应该就是建一个临时表,将第2类表中的30张表的userid去重的插入到临时表中,然后将第一类数据表与该临时表进行比较,就可以~这样算是以空间换取时间吧!这也是我个人的看法,大家有什么更好的法子一定一定要赐教啊啊~~
Step1 建立临时表
create temprary table tem(userid int)
Step2 将第2类数据库中的30张表的userid分布去重的插入到临时表中
insert into tem select userid from 库2.table1
insert ignore into tem select userid from 库2.table2 //INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据
......
insert ignore into tem select userid from 库2.table30
Step3 将第1类数据表a与临时表进行比较,得到【a类数据库的多少用户在数据库2中出现过?】
select count(*) from a where a.userid in (select userid from tmp)