![](/img/trans.png)
[英]PHP/MySQL - UPDATE Query inserts new record instead updating the record
[英]MySQL update query with where condition only updating one record
我有兩個表:
我正在使用此選擇查詢來收集listings table = (SELECT product_name, MIN(price) FROM product_listings GROUP BY product_name)
上具有相同名稱的產品的最低價格。 $ product和$ min_price分別是我在兩個字段中使用的變量。
這樣效果很好,並為我提供了具有相同product_name的所有產品的最低價格。
product_name | Lowest price
Title | £0.69
Title | £7.98
現在,我要使用此數據更新產品詳細信息表(特別是“ lowest_price”列),以便每個動態呈現的產品都顯示可用的最便宜副本的價格。
到目前為止,我已設法使用此update query = ("UPDATE product_details SET lowest_price='$min_price' WHERE product_name='$product'");
來僅更新一條記錄update query = ("UPDATE product_details SET lowest_price='$min_price' WHERE product_name='$product'");
是否可以使用這樣的更新查詢來更新所有記錄? 為什么只更新一條記錄?
假設您在product_listings表中有一個product_id,它與product_details表中的id字段相關,則可以執行以下操作:
update products p
inner join (
select product_id, min(price) min_price
from product_listing
group by product_id
) pl
on p.id = pl.product_id
SET p.min_price = pl.min_price
如果不是這種情況,而您只想加入產品名稱(不是一個好主意),那就是:
update products p
inner join (
select product_name, min(price) min_price
from product_listing
group by product_name
) pl
on p.product_name = pl.product_name
SET p.min_price = pl.min_price
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.