Mysql 从多个结束于的表中选择
我有多张像这样的桌子Mysql 从多个结束于的表中选择,mysql,select,Mysql,Select,我有多张像这样的桌子 CREATE TABLE IF NOT EXISTS `%SYSTEMNAME%_bookings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `begins` datetime NOT NULL, ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ; 其中%SYSTEMNAME%可以是任何内容,并且可以有x个表 我希望能够获得所有表格中每个条
CREATE TABLE IF NOT EXISTS `%SYSTEMNAME%_bookings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`begins` datetime NOT NULL,
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
其中%SYSTEMNAME%可以是任何内容,并且可以有x个表
我希望能够获得所有表格中每个条目的列表(select语句),其背后的原因是统计每天的预订量等)
如何做到这一点,这是我的一点普通sql知识。不,这不正常。不能在单个查询中指定变量表名称。您必须在多个
SELECT
查询之间使用UNION
,前提是这些表具有相同数量的字段,或者从所有表中选择相同数量的字段,如
SELECT a, b, c FROM tbl1
UNION
SELECT d, e, f FROM tbl2
UNION
SELECT g, h, i FROM tbl3
...
或者在准备好的语句中使用多个选择,如
SET $table_name = (SELECT tbl_name FROM system_tables LIMIT 1, @OFFSET);
SET @s = CONCAT('select * from ', @table_name);
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
我认为用一个简单的sql查询无法实现这一点。
我将创建一个带有光标的存储过程:
SHOW TABLES FROM yourDB LIKE '%_bookings';