我在使用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工作台运行这个“行”呢?
此外,您可以尝试提供另一种不同的解决方案!它被高度接受。
提前感谢!
发布于 2019-04-10 18:20:13
我猜您正在尝试执行一个动态sql,您可以这样做:
PREPARE stmt1 FROM @union_jan_tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;https://stackoverflow.com/questions/55609623
复制相似问题