我有一个包含500多个表的数据库,每个表具有相同的结构,其中包含来自传感器的历史数据。我试图想出一个查询来查找,例如,传感器n超过x的所有实例。问题是表是动态的,查询必须能够动态获取表的列表。MySql:查询多个相同的动态表
我可以查询INFORMATION_SCHEMA.TABLES拿到表的列表,像这样:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'database_name';
我可以用它来创建程序中的循环,然后反复查询数据库,但它似乎像应该有办法让MySql做多表搜索。
我还没有能够使存储过程的作品,但我可以找到的例子通常用于搜索任何列中的字符串。我想专门查找所有表中存在的特定列中的数据。我承认我不明白如何正确使用存储过程,也不知道如何解决这个问题。
内环路示例查询是:
SELECT device_name, sensor_value
FROM device_table
WHERE sensor_value > 10;
尝试以下不工作:
SELECT device_name, sensor_value
FROM
(
SELECT table_name FROM information_schema.tables WHERE table_schema = 'database_name'
)
WHERE sensor_value > 10;
这导致一个错误:“每一个派生的表必须有自己的别名。 “
目标是让所有具有给定传感器值的设备在其日志(表格)中的任意位置出现。
最终,一旦我获得了表的列表,是否应该只在我的程序中循环,或者是否有更高效的查询结构?
对我来说,这与我目前在程序代码中执行的循环基本相同。我仍然必须为每个联合生成表名。这是一个可行的解决方案,但不幸的不是我所希望的。 – JYelton 2009-12-15 23:51:08