gpt4 book ai didi

mysql - 循环运行多个Sql命令

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

我成功地从 msql 编辑器 (phpmyadmin) 执行了下面的 sql 代码,并与一位客户进行了测试(其中客户编号=1)。我现在需要为所有客户运行 sql 脚本。

START TRANSACTION;
INSERT INTO `addresses` (`AddressLine1`,`CityID`,`ProvStateCode`,`AddressPostCode`,`CountryIso`) SELECT `Bill To Address`,`Bill To City`,`Bill To Province`,`Bill Code`,`Country` FROM `pdx_customers` where `Customer No`=1;
SELECT @last_id := LAST_INSERT_ID();
SELECT `Customer No` FROM `pdx_customers`
INSERT INTO `customer_addresses` (`CustID`,`AddressID`,`AddressTypeID`) Values(1,@last_id,1);
COMMIT;

看来我需要创建一个存储过程?在循环中,我需要动态获取 pdx_customers 表中每一行的 Customer No ,并输入插入命令中的 Values 子句,即 Values(@CustID ,@last_id,1)。不知道我会怎么做?

如有任何帮助,我们将不胜感激。谢谢

最佳答案

这是一个非常常见的问题,我想说在 sql 中执行循环几乎从来都不是一个好主意。这是另一个选项,您可能认为它好,也可能不认为它好,因为它确实引入了一个新列。我在我做过的一些应用程序中使用过它,它使事情变得非常简单。但确实取决于您的用例,因此并不适合所有人。

1) 首先,在地址表中添加一个新列,将其命名为 TempInsertId 等任何人都不会混淆的名称。

2) 写入新地址时,将 CustomerId 包含在 TempInsertId 列中

3)现在您可以轻松地读回AddressId和CustomerId并将其写入CustomerAddress表

4) 如果您愿意,请进行最终更新以将 TempInsertId 设置回 null。

正如我所说,并不是在所有情况下都提倡,但它可以是解决问题的一个非常简单的解决方案。

关于mysql - 循环运行多个Sql命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52938330/

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