MySQLはどのようにのForeignKey値を指定せずに複数のレコードを更新します

S・シン:

私はテーブルを持っている次のようになります。

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

今、私は注文表は、量の値0.0を持っているかどうかを確認します。この場合、私は、注文テーブルにテーブル項目(Order-> purchase_order_item->項目)と、更新の量のデータを取得する必要があります。

私はそれを修正するためにrunning.Tryingされていない更新クエリの下に書かれています。

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のクエリの新しい、正しい更新クエリを記述しようとしています。

GMB:

私は、あなたがしたいと思いupdate ... join構文を:

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

サイドノートでは:order私は、テーブルの名前を変更して、(他のデータベース用など)のMySQLの予約語であるorders(私はそれが一貫性を保つために、あまりにも他のテーブル名を複数形)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=364761&siteId=1