Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从多个结束于的表中选择_Mysql_Select - Fatal编程技术网

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';