检查数据库中的任何不同表中是否存在记录

时间:2013-05-16 06:47:43

标签: mysql

我处于需要检查数据库中任何表中是否存在特定记录的情况。

所有表都具有相同的结构,但创建不同表的原因只是对它们进行分类。

我正在尝试进行查询,以检查任何表中是否存在特定记录。看看UNION我想这将是一个开销,因为我有大约100个不同的表,其中一些有30万条记录......

有人可以向正确的方向指导......它也想知道Google搜索引擎是如何做事的......

谢谢

2 个答案:

答案 0 :(得分:1)

好吧,如果你只需要执行一次,你可以生成一堆可以运行的SQL语句,看看它们中是否有任何实际返回的东西。显然用你需要的东西替换大括号中的东西。如果你需要反复这样做,那么一定要看看别的东西。

 SELECT CONCAT( 'SELECT {something} from', GROUP_CONCAT(table_name) , 'where {something_else};' ) 
AS statement FROM information_schema.tables
 WHERE 
   table_schema = '{database_name}'
   table_name LIKE '{myprefix}%';

答案 1 :(得分:0)

首先运行以下查询。 例如,我有一个名为test的数据库。它包含5个具有相同结构的表。 SELECT CONCAT('select * from',table_name,'where col_name = value','union')FROM information_schema.tables WHERE table_schema ='test'

在这里,您可以获得一个这样的结果集

SELECT * FROM消息传递UNION SELECT * FROM messaging1 UNION SELECT * FROM messaging2 UNION SELECT * FROM messaging3 UNION SELECT * FROM messaging4 UNION SELECT * FROM messaging5 UNION

运行此结果集,然后您可以从所有表中获取所需的记录

注意:在查询结束时删除“UNION”。

如果您有任何问题,请告诉我。