Mysql如何在不指定foreignkey值的情况下更新多条记录
我有一个如下所示的表:Mysql如何在不指定foreignkey值的情况下更新多条记录,mysql,sql,join,sql-update,Mysql,Sql,Join,Sql Update,我有一个如下所示的表: Table - order id purchase_order_item_id amount 1 1324 0.0 2 2435 50.2 3 5643 87.2 4 6475 0.0 Table - purchase_order_item id item_id 1324
Table - order
id purchase_order_item_id amount
1 1324 0.0
2 2435 50.2
3 5643 87.2
4 6475 0.0
Table - purchase_order_item
id item_id
1324 82
2435 83
5643 84
6475 85
Table - item
id amount
82 76.1
83 50.2
84 87.2
85 65.9
现在我想检查Order表的amount值是否为0.0。在这种情况下,我必须从表item Order->purchase\u Order\u item->item中获取金额数据,并在Order表中更新
我写了下面的更新查询,但它没有运行。正在尝试更正它
UPDATE order
INNER JOIN purchase_order_item ON purchase_order_item.id = order.purchase_order_item_id
SET
order.amount=
(
SELECT item.amount from item
INNER JOIN purchase_order_item ON purchase_order_item.item_id=item.id
)
where order.amount=0.0;
我是mysql查询新手,正在尝试编写正确的更新查询。我想您需要更新。。。联接语法:
旁注:与其他数据库一样,order在MySQL中是一个保留字,因此我将表重命名为orders,并将其他表名复数,以使其保持一致。用创建表脚本替换表结构描述。给出一些插入脚本的示例数据。将此示例数据的所需结果显示为表格式文本。表2和表3之间通过外键链接的确切列是什么?在清晰的示例中重新编写您的问题,并提供示例数据。@t1f表T1中存在一个外键,它将T1与T2链接。T2.t2id不是有效的列名。请添加创建表脚本。显示创建表您对提供创建表脚本有何异议?投票结束。Err ORDER是一个保留字backticks required.@P.Salmon:我通常认为表名是非常假设的,但你肯定是对的。我修改了我的答案。@GMB您的查询没有给出任何错误,但不会更新记录。我收到消息了。MySQL返回了一个空的结果集,即零行。@GMB,尽管我收到了消息。MySQL返回一个空的结果集,即零行,但当我查看表字段值时,它实际上会更新。
update orders o
inner join purchase_order_items poi on poi.id = p.purchas_order_item_id
inner join items i on i.id = poi.item_id
set o.amount = i.amount
where o.amount = 0