我有一个表items
,其中有一个字段priority
。字段优先级中的一半元素具有从1
到x
的唯一值。我希望字段priority
为null的元素的增量值为x+1
到y
。
我试过了
UPDATE items
SET priority = IFNULL(priority, 0)
但这不是我想要的。我希望非空字段保持原样,我通过以下方式实现:
SET priority = IFNULL(priority, 0)
和null字段开始从值增加,我得到以下结果:
SELECT MAX(priority)
FROM items;
所以我想到的唯一一件事就是接近
UPDATE items
SET priority =
IFNULL(priority, 0) + (SELECT MAX(priority)
FROM items)
WHERE priority IS NULL
但是我不太确定如何这样做。任何提示或提示?
答案 0 :(得分:3)
您可以获取当前的最高优先级并将其存储在变量中。然后,将该值带入查询,例如使用cross join
。您可以在set
语句中增加值:
update items i cross join
(select @x := max(priority) from items) maxp
set priority = (@x := @x + 1)
where priority is null;