我們有一個表,TABLE_1:插入一個新的排名列錯誤
DATA
1
2
3
4
5
NULL
我們希望基於數據列
DATA,RANK
1,1
2,2
3,3
4,4
5,5
NULL,0
下生成一個RANK列是我們的代碼:
ALTER TABLE ` TABLE_1`
ADD COLUMN `RANK` DOUBLE NOT NULL AFTER `DATA`;
INSERT INTO TABLE_1
SELECT B.DATA,
CASE WHEN B.DATA IS NULL THEN 0 ELSE @number := @number + 1
END RANK
FROM TABLE_1 B, (SELECT @number := 0 AS BOO) C
ORDER BY B.RANK;
以上查詢只會在RANK列中生成0
DATA,RANK
1,0
2,0
3,0
4,0
5,0
NULL,0
但是,如果我們只是一起運行查詢,而不ALTER TABLE和INSERT INTO像下面,HeidiSQL將返回我們正在尋找
SELECT B.DATA,
CASE WHEN B.DATA IS NULL THEN 0 ELSE @number := @number + 1
END RANK
FROM TABLE_1 B, (SELECT @number := 0 AS BOO) C
ORDER BY B.RANK;
表以上腳本將生成一個表,我們正在尋找
DATA,RANK
1,1
2,2
3,3
4,4
5,5
NULL,0
任何大師能夠啓發爲什麼ALTER TABLE/INSERT INTO不起作用?
的SQL小提琴,請訪問:與內
http://sqlfiddle.com/#!9/d2837/2
這是沒有必要在這裏吶喊你的問題標題。它不會讓你得到更快的幫助,這使得問題更難以閱讀,而且毫無理由地被淘汰是無禮和惱人的。很明顯,您的CAPS LOCK沒有卡住,因爲您設法正確處理了問題本身中的一些文本。請住手。謝謝。 –
爲什麼DOUBLE ?????? – Strawberry