gpt4 book ai didi

MySQL UPDATE 使用 JOIN 到子查询

转载 作者:行者123 更新时间:2023-11-29 13:15:29 27 4
gpt4 key购买 nike

我有一个名为 sagepaydirect__transactions 的表,我正在通过迁移来更新该表,以将其 response 字段设置为名为 response 的表的 response 字段sagepaydirect__responses

这两者通过名为 sagepaydirect__requests 的表在 vendor_tx_code 字段中以 _ 分隔的字符串的最后 4 位数字上进行微妙的链接。

问题在于,sagepaydirect__requests 在连接到 sagepaydirect__transactions 时将有多行。我想要做的是执行 JOIN,以便 UPDATE 从 sagepaydirect__transactions 中 ID 较高的行中获取值。

这是我的查询尝试,但提示是 t.id 不存在。

UPDATE sagepaydirect__transactions t
INNER JOIN (
SELECT * FROM sagepaydirect__requests rq
WHERE SUBSTRING_INDEX(rq.vendor_tx_code, '_', -1) = t.id
ORDER BY id DESC
LIMIT 1
) rq_table
ON t.id = SUBSTRING_INDEX(rq_table.vendor_tx_code, '_', -1)
INNER JOIN sagepaydirect__responses rs
ON rq.id = rs.request_id
SET t.response = rs.status_detail

最佳答案

您正尝试在 from 子句中使用相关子查询。那是行不通的。下面使用聚合来获取最大id,然后继续进行join

UPDATE sagepaydirect__transactions t INNER JOIN
(SELECT SUBSTRING_INDEX(rq.vendor_tx_code, '_', -1) as val, max(id) as maxid
FROM sagepaydirect__requests rq
WHERE SUBSTRING_INDEX(rq.vendor_tx_code, '_', -1) = t.id
group by id SUBSTRING_INDEX(rq.vendor_tx_code, '_', -1)
) rq
ON t.id = rq.val INNER JOIN
sagepaydirect__responses rs
ON rq.id = rs.request_id
SET t.response = rs.status_detail;

关于MySQL UPDATE 使用 JOIN 到子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21514120/

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