mysql - 运行保存在字段中的 SQL 查询
问题描述
我在下面的链接上有一个后续问题。显然我必须创建一个新问题(对不起,如果我不应该这样做,我是 stackoverflow 的新手)
对此问题的回应之一是:
SELECT sql_text INTO @sql FROM sql_queries WHERE id = 1;
PREPARE sql_query FROM @sql;
EXECUTE sql_query;
如果我逐行运行上述代码会有所帮助,但我想将其作为一个整体运行并在另一个查询中使用结果。所以我的问题如下:
1 - 如果我删除分号并尝试同时运行三行,它将不起作用。
2 - 我如何将这次运行的结果读入查询中。我正在考虑将所有三行都放在一个子查询中,但这没有用。
如果您对此有任何评论,我将不胜感激。谢谢!
解决方案
我认为您不能在另一个查询中“嵌入”执行(也不是它的结果),这听起来就像您的目标。相反,您可能需要考虑使用 @sql 查询作为子查询来构建最终查询,例如:
SET @finalSQL = CONCAT("SELECT stuff FROM sometables JOIN (", @sql, ") AS subQ ON blah");
PREPARE sql_query FROM @sql;
EXECUTE sql_query;
当然,您需要对提供的@sql 查询做出很多假设;至少您必须假设:它将对连接条件有效(或者使用子查询)并且它不会以分号终止。后者可以很容易地检查和修复,前者可能需要大量的解析和分析。
推荐阅读
- node.js - 使用 Postman 时如何解决 nodejs 中的 CORS 错误?
- java - VSCode + Gradle Java 运行和调试
- javascript - 为什么我无法从 Angular10 的下拉菜单中获取值?
- javascript - JS 正则表达式。如何将两个表达式合二为一?
- git - 如何删除/替换 git subtree 提交及其合并提交?
- javascript - 即使闭包不依赖于词法范围,是否也应该使用闭包来构建代码?如何在循环内重新声明?
- javascript - 在 React Native 中导航到同一页面内的不同屏幕
- ios - Flutter ios 设备不会从 FCM 通知触发 onMessage。实施 APN 时 Sendtodevice 失败
- python - 为什么我的 Toplevel() 窗口显示空白
- laravel - Laravel API 路由 404