Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql如何在不指定foreignkey值的情况下更新多条记录_Mysql_Sql_Join_Sql Update - Fatal编程技术网

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