我在使用MySQL模式和表时遇到问题。更确切地说,我想运行一个查询,首先在预选模式中查找某些表,然后将所有提取的表连接到一个大表中(使用UNION
)
这是我到目前为止所做的:
SET @union_jan_tables = NULL;
SELECT
GROUP_CONCAT(
DISTINCT
CONCAT('SELECT * FROM ', table_name)
SEPARATOR '\r\nUNION\r\n'
)
INTO
@union_jan_tables
FROM
information_schema.tables
WHERE
table_schema = 'my_schema' AND table_name LIKE '%jan%';
SELECT @union_jan_tables;
它返回以下内容:
'SELECT * FROM jan_2018
UNION
SELECT * FROM jan_2019'
可悲的是,它返回的行值正是我要运行的查询。因此,我如何对MySQL Workbench说运行该“行”?
此外,您可以尝试提供另一种不同的解决方案!它被高度接受。
谢谢!
答案 0 :(得分:2)
我猜您正在尝试执行动态sql,您可以这样做:
PREPARE stmt1 FROM @union_jan_tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;