我处于需要检查数据库中任何表中是否存在特定记录的情况。
所有表都具有相同的结构,但创建不同表的原因只是对它们进行分类。
我正在尝试进行查询,以检查任何表中是否存在特定记录。看看UNION我想这将是一个开销,因为我有大约100个不同的表,其中一些有30万条记录......
有人可以向正确的方向指导......它也想知道Google搜索引擎是如何做事的......
谢谢
答案 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”。
如果您有任何问题,请告诉我。