MySQL ifnull子查询

时间:2015-04-08 18:58:30

标签: mysql

我正在尝试更新表并将列set_price(如果它是null)设置为另一个表中的值。

两个记录共享相同的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

2 个答案:

答案 0 :(得分:2)

更好的方法是使用连接更新,使用case-when something as

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

答案 1 :(得分:0)

如果select语句返回多个结果行,则select语句可能缺少 distinct limit 1