我有一個表items
其中有一個領域priority
。現場優先級中的一半元素具有範圍從1
到x
的唯一值。我想要的元素,其中場priority
爲空擁有的x+1
增量值y
。自動遞增空字段,留給非空字段是
我已經試過
UPDATE items
SET priority = IFNULL(priority, 0)
但是這不是我想要的。我想非空領域保持原樣,我有以下實現:
SET priority = IFNULL(priority, 0)
和空字段開始從數值增加,這我得到如下:
SELECT MAX(priority)
FROM items;
所以,唯一的事情我想到的是
UPDATE items
SET priority =
IFNULL(priority, 0) + (SELECT MAX(priority)
FROM items)
WHERE priority IS NULL
不過我也不太知道我怎麼會去這樣做使一些接近。任何提示或提示?
如果你不知道是否會工作,然後只是嘗試,看看它的工作 –
多少,你呢?你會不會需要再次糾正這個問題,還是一次性重新編號?該列尚未具有我假設的AUTO_INCREMENT,因爲如果沒有,它將爲空。我可以看到後情況下,你[添加一個新的AUTO_INCREMENT列(http://stackoverflow.com/questions/9070764/insert-auto-increment-primary-key-to-existing-mysql-database/9070808#9070808)將其值設置爲x + 1,然後將舊的現有值更新到新列。也許。 –
@MichaelBerkowski這是一個一次性的事情。並且有30個項目具有從1到30的優先級設置,以及40個具有空優先級的項目。列沒有自動增加或任何類型的東西。 – Quillion