我正在尝试更新表并将列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
答案 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 。