首页 > 解决方案 > 在变量中分配查询字符串

问题描述

在 mySQL 存储过程中,如何将查询字符串分配给变量,以便我可以重用它?在我的示例中,我将SELECT id FROM audit多次使用。

CREATE PROCEDURE my_proc() 
BEGIN

UPDATE person SET status='Active' WHERE id = (SELECT id FROM audit);

SELECT COUNT(*) FROM (SELECT id FROM audit);

//Multile scenarios the `SELECT id FROM audit` will be used.

END

就像是:

CREATE PROCEDURE my_proc() 
BEGIN
myVariable = SELECT id FROM audit;
UPDATE person SET status='Active' WHERE id = (myVariable;

SELECT COUNT(*) FROM (myVariable);

//Multile scenarios the `SELECT id FROM audit` will be used.

END

标签: mysqlsql

解决方案


这是你想要的?抱歉,我不确定您需要什么。

    SELECT @myCount:= count(id)  FROM audit;
    select @myCount;

根据您的回复,您是否需要一个临时表来存储审核中的 id 并在查询中重新使用这些 id?

create temporary table tbl_tmp_audit;
select id from audit; 

我假设您需要这个,这样您就不会在每次后续查询时都加入整个审计列。

--first query
UPDATE person AS p
INNER JOIN tbl_tmp_audit t ON p.id = t.id
SET status = 'Active';
--second query
SELECT COUNT(*) FROM tbl_tmp_audit;

Drop temporary table tbl_temp_bookings;

推荐阅读