跨多个数据库运行查询以查找用户名重复的次数

时间:2015-01-28 21:10:59

标签: mysql sql database

我有一个租赁网络应用程序(每个租户都有自己的数据库)。我试图将其转移到多租户架构,但在此之前,我正在尝试识别冲突。

目前,我正在尝试找出许多不同租户之间可能重复的用户名。

到目前为止,我的解决方案是编写一个类似这样的查询:

SELECT `user`, count(*) FROM (     
    (SELECT * FROM `100001`.`user`) UNION
    (SELECT * FROM `100002`. `user`) UNION
    (SELECT * FROM `100003`. `user`) UNION
    (SELECT * FROM `100004`. `user`) UNION
    (SELECT * FROM `100005`. `user`) UNION
    ...
) as `all_users`
GROUP BY `user`

这很好用,但是当你意识到已经有超过100个数据库时,它不能很好地扩展。

我开始考虑使用CONCAT来帮助我生成查询,但却陷入了困境:

SELECT CONCAT('(SELECT * FROM `', SCHEMA_NAME, '`.`user`)')
FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME` REGEXP '[0-9]{6}';

有关从哪里开始的任何想法?

0 个答案:

没有答案