MySQL запрос на обновление, где условие обновляет только одну запись

У меня есть две таблицы:

  1. Информация о продукте — для хранения информации о продукте.
  2. Списки продуктов — для нескольких копий, которые могут быть проданы разными пользователями.

Я использую этот запрос выбора, чтобы собрать самую низкую цену продуктов с таким же именем на listings table = (SELECT product_name, MIN(price) FROM product_listings GROUP BY product_name), $ продукта & $ MIN_PRICE переменные, которые я использую для двух полей соответственно.

Это прекрасно работает и дает мне самую низкую цену всех продуктов с одинаковым именем продукта.

product_name | Lowest price
Title        | £0.69
Title        | £7.98

Теперь я хочу обновить таблицу сведений о продукте (в частности, столбец «lower_price»), добавив эти данные, чтобы в каждом динамически отображаемом продукте отображалась цена самой дешевой из доступных копий.

Пока мне удалось обновить только одну запись с этим update query = ("UPDATE product_details SET lowest_price='$min_price' WHERE product_name='$product'");

Можно ли обновить все записи с помощью запроса на обновление, подобного этому? Почему обновляется только одна запись?

0

Решение

Предполагая, что у вас есть product_id в вашей таблице product_listings, которая относится к полю id в вашей таблице product_details, вы можете сделать это:

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

Пример скрипки: http://sqlfiddle.com/#!9/9b928/1

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]