我有两张桌子:
我使用此选择查询来收集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'");
是否可以使用这样的更新查询更新所有记录?为什么只更新一条记录?
答案 0 :(得分:2)
假设您的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