gpt4 book ai didi

mysql - 如何在插入临时表时限制内部查询中的 select 语句

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

我想做一个查询,从另一个表中插入数据,该表具有在运行时生成的动态限制,我该怎么做

这是我在 session 的临时表中插入数据的过程的一部分,这样我就可以处理其他查询,我已经通过重复语句完成了,但是这需要比预期更长的时间我想要这样的东西,但 MySQL 确实不允许限制变量。

我在这里使用 int 进行演示。

**SET @counter = 10; #FOUND_ROWS();
SET @bill_id = 1; #last_insert_id();
INSERT INTO billingids (bill_id) (
SELECT id from cfx_billing WHERE id >= @bill_id LIMIT @counter
);**

但它不起作用然后我尝试了 prepare 语句

**SET @counter = 10; #FOUND_ROWS();
SET @bill_id = 1; #last_insert_id();
PREPARE STMT FROM "SELECT id from cfx_billing WHERE id >= @bill_id LIMIT ?";
INSERT INTO billingids (bill_id) (
EXECUTE STMT USING @counter
);
DEALLOCATE PREPARE stmt;**

对于 1 条语句,我收到此错误

SQL 错误 (1064):您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在 '@counter 附近使用的正确语法)' 在第 1 行。

对于2个语句

SQL 错误 (1064):您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在“EXECUTE STMT USING @counter”附近使用的正确语法)' 在第 2 行

最佳答案

您不能在子查询中使用 EXECUTE STMT。它必须是整个查询。

PREPARE STMT FROM "INSERT INTO billingids (bill_id) 
SELECT id from cfx_billing WHERE id >= @bill_id LIMIT ?";
EXECUTE STMT USING @counter;

我没有测试过这个例子,但我知道你需要准备整个语句,而不仅仅是子查询。

关于mysql - 如何在插入临时表时限制内部查询中的 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53905470/

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