从上一个查询结果开始查询-MySQL

时间:2019-04-10 09:51:43

标签: mysql sql union

我在使用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说运行该“行”?

此外,您可以尝试提供另一种不同的解决方案!它被高度接受。

谢谢!

1 个答案:

答案 0 :(得分:2)

我猜您正在尝试执行动态sql,您可以这样做:

PREPARE stmt1 FROM @union_jan_tables;

EXECUTE stmt1;

DEALLOCATE PREPARE stmt1;