gpt4 book ai didi

MySQL批量更新

转载 作者:可可西里 更新时间:2023-11-01 07:06:36 24 4
gpt4 key购买 nike

我有 2 个表(MySQL)

  1. 数据详情
  2. accounts_invoices

理想情况下,每个 data_details 都应该有一个 accounts_invoices id。 (data_details 有一个带有 accounts_invoices 主键的外键)

由于某些原因,在 accounts_invoices 表中存在 accounts_invoice_id 不存在的 data_details 记录

所以我尝试用已知的 accounts_invoice id 更新那些 data_details 记录。这就是我所做的

update data_details 
set account_invoice_id = 1
where account_invoice_id in (
select d.id
from data_details d left join accounts_invoices a
on d.account_invoice_id = a.id
where a.id is null
)

但是出现错误说

您可以在 FROM 子句中指定要更新的目标表 'data_details'(错误 1093)

谁能帮帮我,在此先感谢

干杯

萨梅拉

最佳答案

现在这可能是一个大胆的猜测,但我认为问题在于您更新了您正在查询的同一个表。我认为解决方法是使用一个临时表,如下所示:

update data_details 
set account_invoice_id = 1
where account_invoice_id in (
select * from (
select d.id
from data_details d left join accounts_invoices a
on d.account_invoice_id = a.id
where a.id is null
) as t
)

虽然还没有尝试过,所以可能都是错误的。


更新了 SQL 以修复我在评论中发现的错误。

update data_details 
set account_invoice_id = 1
where id in (
select * from (
select d.id
from data_details d left join accounts_invoices a
on d.account_invoice_id = a.id
where a.id is null
) as t
)

关于MySQL批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198082/

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