我们有一个表,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