我有许多根据“前缀+数字”方案动态创建的外观几乎相似的表,例如“t1”、“t2”、“t343”等。所有这些表都有一个名为identifier
的跨表唯一行,我喜欢在一个查询中选择它:
SELECT
`identifier`
FROM
(
SELECT
`TABLE_NAME`
FROM
information_schema.TABLES
WHERE
`TABLE_NAME` LIKE 't%'
);
但这返回:错误1248(42000):每个派生表都必须有自己的别名
EDIT:根据注解我这样修改了我的查询:
SELECT
A.identifier
FROM
(
SELECT
`TABLE_NAME` AS identifier
FROM
information_schema.TABLES
WHERE
`TABLE_NAME` LIKE 't%'
) A;
但这只会从子查询中选择表名,而不会从这些表中选择列identifier
。
1条答案
按热度按时间5gfr0r5j1#
当您动态建立数据表,而且想要查询所有数据表时,可以动态建立SQL陈述式,例如:
这将生成如下所示的SQL语句:
当将所有这些都放在存储过程中时,可以使用PREPARE和EXECUTE来执行创建的语句。
上面只是一个SQL语句的例子,你应该根据自己的需要修改它。