SELECT a.ssn
, GROUP_CONCAT(a.src ORDER BY a.src)
FROM (
SELECT 'db01' AS src, t01.ssn FROM database_one.mytable t01
UNION ALL
SELECT 'db02' AS src, t02.ssn FROM database_two.mytable t02
UNION ALL
SELECT 'db03' AS src, t03.ssn FROM database_three.mytable t03
...
UNION ALL
SELECT 'db15' AS src, t15.ssn FROM database_fifteen.mytable t15
) a
GROUP BY a.ssn
HAVING SUM(1) > 1
如果所有数据库都在同一个MySQL实例中,并且您有一个对所有15个数据库都有权限的用户
有一种方法:
请注意,这将要求MySQL具体化15个数据库中表中所有行的所有ssn的结果集,这可能是一个相当大的集合,因此您需要有足够的临时空间和时间来执行排序操作以识别“重复项”。对于大型集合,这可能会拖一段时间,因此还要注意锁争用(影响这些表上的其他活动)
编辑
15个单独的MySQL实例将需要15个单独的MySQL数据库连接
我要做的是:从每个数据库中提取ssn列表,将每个ssn提取到一个单独的平面文件中。然后将所有15个平面文件加载到一个表中(在单独的数据库中)。MySQL
LOAD DATA
语句是实现这一点的方便方法最终的结果是,在上面的查询中,我将得到一个类似内联视图的表,别名为
a
。要识别“重复项”,外部查询将是相同的相关问题 更多 >
编程相关推荐