mysql - 选择结果集到变量中,然后在同一存储过程的更新中使用该变量

标签 mysql stored-procedures

好吧,所以这要么是不可能的,要么我在谷歌搜索上很糟糕。 (这里后者更有可能)
我的问题是这样的:使用存储过程,是否可以将 ids 结果集选择到变量中,然后使用这些 ids 作为在同一 SP 中运行的更新中 IN 的条件? 我想要这样的东西(我认识到我忽略了这里的分隔符冲突)

CREATE PROCEDURE test()
BEGIN
DECLARE var1 INT DEFAULT 0;
SELECT id INTO var1 FROM table WHERE this='this';
some other stuff
UPDATE table2 SET blah='blah' WHERE fk_id IN (var1);
END;

“一些其他东西”基本上以这样的方式操纵数据,我将无法通过使用 IN 内的内部查询来获取适当的 id 列表,所以我基本上需要“保存"将适当的 ids 列表放入变量中,然后稍后使用该变量。这可以做到吗?

请不要建议其他方法来执行此操作/重组我的数据/逻辑,这样我就不必担心这个问题。我需要知道的是是否/如何可以做到这一点。如果无法完成,我有备份选项,这将是最可取的方法。

提前致谢。

最佳答案

类似这样的事情:

CREATE PROCEDURE test()
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS tmp AS (SELECT id FROM table WHERE this='this');
some other stuff
UPDATE table2 SET blah='blah' WHERE fk_id IN (SELECT id FROM tmp);
END;

关于mysql - 选择结果集到变量中,然后在同一存储过程的更新中使用该变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663707/

相关文章:

mysql - 选择同一日期的最大 ID 值

mysql - ON DUPLICATE KEY 仍然重复插入

mysql - 记录没有索引的表的排序

sql - 如果存储过程中的参数为null,则不更新列

mysql - 将未知数量的数据显示为列名

Mysql按混合值然后其他值排序

mysql - 是否可以使用 MySQL 命令访问 FTP 服务器?

mysql - 从 phpMyAdmin 中的存储过程复制文本后,无法执行 sql 语句来创建过程

MySQL SP : ERROR 1241 (21000)

MySQL存储过程-如何引用内部创建的记录集