【问题标题】:How to execute multiple rows of statements returned as a result of another select statement如何执行作为另一个 select 语句的结果返回的多行语句
【发布时间】:2022-11-17 04:49:34
【问题描述】:

我有一个使用 CONCAT 的 Select 语句查询,它会生成一组其他 SELECT 语句。我怎样才能迭代地执行这些?

这是我的第一个查询

SELECT CONCAT( 'SELECT body from knowledge where id=''', id, '''', ' INTO OUTFILE ''', '/tmp/',CAST(id AS CHAR), '.html'';') FROM knowledge ORDER BY id;

这导致一行选择语句:

 SELECT body from knowledge  where id='1' INTO OUTFILE '/tmp/1.html';                                                         |
| SELECT body from knowledge  where id='2' INTO OUTFILE '/tmp/2.html';                                                         |
| SELECT body from knowledge  where id='3' INTO OUTFILE '/tmp/3.html';                                                         |
| SELECT body from knowledge  where id='4' INTO OUTFILE '/tmp/4.html';                                                         |
| SELECT body from knowledge  where id='5' INTO OUTFILE '/tmp/5.html';                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
5 rows in set (0.000 sec)

需要执行每行中返回的这些查询集。我怎样才能做到这一点?

【问题讨论】:

  • 使用存储过程。您正在动态地组装 SQL 语句并执行它们,您需要使用存储过程逻辑。
  • 你必须写一个存储过程。它可以将结果放在一个变量中,然后使用PREPAREEXECUTE

标签: mysql sql database mariadb export


【解决方案1】:

最简单的方法是将查询输出到另一个 .txt 文件中,然后使用 > source file.txt 运行所有查询。

【讨论】:

    最近更新 更多