0

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

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

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

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

谢谢

4

2 回答 2

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}%';
于 2013-05-16T07:07:56.380 回答
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 消息1 UNION SELECT * FROM 消息2 UNION SELECT * FROM 消息3 UNION SELECT * FROM 消息4 UNION SELECT * FROM 消息5 UNION

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

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

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

于 2013-05-16T07:55:28.207 回答