【发布时间】:2017-04-13 17:17:49
【问题描述】:
我有一些结构为“TableNameYYMM”的历史表 如何联合所有以“TableName”开头的历史表?
我需要搜索所有历史表。
我尝试使用 PREPARE Execute 和 DEALLOCATE。 但我每次都会遇到 SQL 错误。
SET group_concat_max_len = 2048;
SET @startQuery = (SELECT CONCAT('SELECT col1, col2, col3 FROM ',TABLE_SCHEMA,'.', TABLE_NAME)
FROM information_schema.tables
WHERE
ENGINE = 'MyISAM'
AND TABLE_NAME like 'hist%'
ORDER BY TABLE_NAME
LIMIT 0,1);
SET @subquery = (SELECT GROUP_CONCAT(@startquery, 'UNION ALL SELECT col1, col2, col3 FROM ',TABLE_SCHEMA,'.', TABLE_NAME)
FROM information_schema.tables
WHERE
ENGINE = 'MyISAM'
AND TABLE_NAME like 'hist%'
ORDER BY TABLE_NAME
LIMIT 1,1000);
PREPARE stmt1 FROM '? AS combinedTable';
EXECUTE stmt1 USING @subquery;
DEALLOCATE PREPARE stmt1;
在第 1 部分 (@startquery) 我尝试获取查询的第一部分 "从 table1 中选择 xxx"
在第 2 部分(@subquery)我尝试获取所有联合(来自 table2-max 1000)
select xxx from table1
UNION ALL select xxx from table2
UNION ALL select xxx from table3
...
我希望有人对这个问题有所了解。
【问题讨论】: