MySQL是一種廣泛使用的關系型數據庫管理系統。在實際應用中,我們有時需要查詢分表所有數據。下面是一個查詢語句的演示:
SELECT * FROM table_1 UNION ALL SELECT * FROM table_2 UNION ALL SELECT * FROM table_3 UNION ALL ... SELECT * FROM table_n;
其中,table_1、table_2... table_n表示分表的名稱。此語句會查找所有分表的數據,并將結果合并在一起。其中,UNION ALL表示將結果合并,并保留所有的行。
在實際使用中,我們可以將上述語句保存為存儲過程,方便以后的查詢。下面是一個示例:
DELIMITER // CREATE PROCEDURE query_all_tables() BEGIN DECLARE i INT DEFAULT 1; DECLARE n INT DEFAULT 0; DECLARE table_name VARCHAR(100); DECLARE query_str VARCHAR(1000) DEFAULT ''; SELECT COUNT(*) INTO n FROM information_schema.tables WHERE table_schema = 'your_database'; WHILE i<= n DO SELECT table_name INTO table_name FROM information_schema.tables WHERE table_schema = 'your_database' AND table_name LIKE 'table_%' LIMIT 1 OFFSET i-1; SET query_str = CONCAT(query_str, 'SELECT * FROM ', table_name, ' UNION ALL '); SET i = i + 1; END WHILE; SET query_str = SUBSTRING(query_str, 1, LENGTH(query_str)-10); PREPARE stmt FROM query_str; EXECUTE stmt; DEALLOCATE PREPARE stmt; END // DELIMITER ;
以上存儲過程使用了information_schema.tables,查詢所有以"table_"開頭的表名,再將查詢的結果合并。你可以按照自己的需求修改該存儲過程。