【发布时间】:2011-09-06 02:03:46
【问题描述】:
我有 2 个表(MySQL)
- data_details
- accounts_invoices
理想情况下,每个 data_details 都应该有一个 accounts_invoices id。 (data_details 有一个外键和accounts_invoices 的主键)
由于某些原因,data_details 记录中accounts_invoice_id 不存在于accounts_invoices 表中
所以我尝试使用已知的 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)
谁能帮帮我,提前谢谢
干杯
同人
【问题讨论】:
-
为了以后避免这个问题,我推荐使用 InnoDB 和外键约束。
-
嗨@Znarkus,感谢您的评论,基本上我也在尝试向这个现有表添加外键关系:D(data_details)
-
未测试,但 mysql 允许查询:UPDATE data_details SET d1 account_invoice_id=1 FROM data_details d1 INNER JOIN data_details d2 ON d1.account_invoice_id = d1.id LEFT JOIN accounts_invoices a on d2.account_invoice_id = a.id WHERE a.id 为空
-
嗨@Brice,谢谢你的回答......但我收到了这个错误......错误1064(42000):你的SQL语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“FROM data_details d1 INNER JOIN data_details d2 ON d1.account_invoice_id = d1.id”附近使用正确的语法有什么想法吗??
-
oups 对不起,我认为这是 ON d1.account_invoice_id = d2.id
标签: mysql sql sql-update mysql-error-1093