我々はテーブル、TABLE_1持つ新しいランキング列バグ:挿入
DATA
1
2
3
4
5
NULL
我々はDATA列以下
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しか生成されません。
私たちは次のようにALTER TABLEとINSERT INTOせずに、一緒にクエリを実行した場合DATA,RANK
1,0
2,0
3,0
4,0
5,0
NULL,0
しかし、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