gpt4 book ai didi

mysql - 如何使用分配给变量的找到的行数并在 INSERT 语句中使用它?

转载 作者:行者123 更新时间:2023-11-29 02:58:52 25 4
gpt4 key购买 nike

我想在我的临时表上获取结果数,所以我创建了一个查询,如下所示:

SELECT * FROM tmp_sales_negative; -- Selected all columns on my temporary table

SET @limit = (SELECT FOUND_ROWS()); -- Set a variable assignment named 'limit'

上面的查询工作正常,我得到了正确数量的结果行,但是当我在这个查询中使用变量名时:

INSERT INTO tmp_credit_memo_receivables(credit_memo_id, amount)
SELECT id, amount FROM credit ORDER BY id DESC LIMIT @limit;

@limit部分提示语法错误。我做错了吗?

谢谢!

最佳答案

你必须为此使用动态 sql。要使用动态 sql,您必须在存储过程中执行此操作。

像这样创建过程:

DELIMITER $$
CREATE PROCEDURE sp_limit()
BEGIN
SELECT SQL_CALC_FOUND_ROWS * FROM tmp_sales_negative;
SET @limit = (SELECT FOUND_ROWS());
SET @sql = 'INSERT INTO tmp_credit_memo_receivables(credit_memo_id, amount)
SELECT id, amount FROM credit ORDER BY id DESC LIMIT ?;';
PREPARE stmt FROM @sql;
EXECUTE stmt USING @limit;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;

然后用

执行
CALL sp_limit();

关于mysql - 如何使用分配给变量的找到的行数并在 INSERT 语句中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26903909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com