2015-04-08 3 views
1

Я пытаюсь обновить таблицу и установить столбец set_price, если это значение null для значения из другой таблицы.MySQL ifnull sub query

Обе записи имеют одинаковые prod_id. Может ли кто-нибудь просмотреть мой запрос и сказать мне, что с ним не так?

update list_items l 
set purchased = "YES", 
set_price = IFNULL(set_price,(select pricelast 
        from inventory i where i.prod_id=l.prod_id)) 
where l.list_id=1 
+0

Есть ошибки? – potashin

+0

Просьба указать конкретную ошибку - этот запрос может быть выражен с помощью JOIN с использованием синтаксиса [многоэлементного обновления MySQL] (https://dev.mysql.com/doc/refman/5.0/en/update.html) –

+0

set_price is имя столбца. Нет сообщений об ошибке, просто Затронутые строки: 0 (Query took 0.0017 sec) выберите pricelast из инвентаря i, где i.prod_id = 2 дает результат 2.00. – Bicycle

ответ

2

Лучший способ будет использовать присоединиться обновление с использованием случай-когда-то, как

update list_items l 
left join inventory i on i.prod_id=l.prod_id 
set l.purchased = 'YES', 
l.set_price = 
case 
    when l.set_price is null then i.pricelast else l.set_price 
end 
+0

Thaks, которая отлично поработала. Мне просто нужно было добавить в конец список list_id =. – Bicycle

+0

Ах, простите, я пропустил это. –

0

выбора заявление может отсутствовать отличие или на предел 1, если выбрать оператор возвращает более одной строки результата.