首页 > 解决方案 > 运行保存在字段中的 SQL 查询

问题描述

我在下面的链接上有一个后续问题。显然我必须创建一个新问题(对不起,如果我不应该这样做,我是 stackoverflow 的新手)

对此问题的回应之一是:

SELECT sql_text INTO @sql FROM sql_queries WHERE id = 1;
PREPARE sql_query FROM @sql;
EXECUTE sql_query;

如果我逐行运行上述代码会有所帮助,但我想将其作为一个整体运行并在另一个查询中使用结果。所以我的问题如下:

1 - 如果我删除分号并尝试同时运行三行,它将不起作用。

2 - 我如何将这次运行的结果读入查询中。我正在考虑将所有三行都放在一个子查询中,但这没有用。

如果您对此有任何评论,我将不胜感激。谢谢!

原始问题

标签: mysqlsql

解决方案


我认为您不能在另一个查询中“嵌入”执行(也不是它的结果),这听起来就像您的目标。相反,您可能需要考虑使用 @sql 查询作为子查询来构建最终查询,例如:

SET @finalSQL = CONCAT("SELECT stuff FROM sometables JOIN (", @sql, ") AS subQ ON blah");
PREPARE sql_query FROM @sql;
EXECUTE sql_query;

当然,您需要对提供的@sql 查询做出很多假设;至少您必须假设:它将对连接条件有效(或者使用子查询)并且它不会以分号终止。后者可以很容易地检查和修复,前者可能需要大量的解析和分析。


推荐阅读