gpt4 book ai didi

php - MySQL INSERT SELECT 并获取主键值

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

我想知道是否可以将来自源表的 SELECT 语句的记录插入到目标表中,获取 INSERT ID 并更新源表中所有相应记录的字段。

例如,目标表'payments':

CREATE TABLE `payments` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`txid` TEXT NULL,
`amount` DECIMAL(16,8) NOT NULL DEFAULT '0.00000000',
`worker` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`id`)
)

表“日志”:

CREATE TABLE `log` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`solution` VARCHAR(80) NOT NULL,
`worker` INT(11) NOT NULL,
`amount` DECIMAL(16,8) NOT NULL DEFAULT '0.00000000',
`pstatus` VARCHAR(50) NOT NULL DEFAULT 'pending',
`payment_id` INT(10) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)

“日志”表包含一个已完成任务的多个“小额支付”。 “支付”表的目的是将小额支付合并为一个较大的支付:

INSERT INTO payments p (amount, worker)
SELECT SUM(l.amount) AS total, l.worker FROM log l
WHERE l.pstatus = "ready"
AND l.payment_id IS NULL
AND l.amount > 0
GROUP BY l.worker

我不确定上面的代码是否清楚,但我希望字段“payment_id”被赋予插入 ID 的值,以便可以追溯到小额支付到更大的合并支付。

我可以在所有客户端 (PHP) 完成这一切,但我想知道是否有一些神奇的 SQL 查询可以为我完成这一切?或者也许我做错了。

最佳答案

您可以使用 mysql_insert_id() 获取插入记录的 ID。

See mysql_insert_id()

但是上面的函数已经被弃用了。

如果您使用的是 PDO,请使用 PDO::lastInsertId .

如果您使用的是 Mysqli,请使用 mysqli::$insert_id .

关于php - MySQL INSERT SELECT 并获取主键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22324486/

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