自动增加空字段,保持非空字段不变

时间:2015-05-29 13:36:14

标签: mysql

我有一个表items,其中有一个字段priority。字段优先级中的一半元素具有从1x的唯一值。我希望字段priority为null的元素的增量值为x+1y

我试过了

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

但是我不太确定如何这样做。任何提示或提示?

1 个答案:

答案 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;