我有一個包含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