Wir haben eine Tabelle, table_1:Legen Sie eine neue Ranking-Spalte Fehler
DATA
1
2
3
4
5
NULL
Wir wollen eine RANK Spalte erzeugen, basierend auf der DATA-Spalte
DATA,RANK
1,1
2,2
3,3
4,4
5,5
NULL,0
Hier finden Sie unseren Code:
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;
Die obige Abfrage generiert nur 0 in der RANK-Spalte
DATA,RANK
1,0
2,0
3,0
4,0
5,0
NULL,0
Wenn wir jedoch nur die Abfrage entlang laufen, ohne die ALTER TABLE und INSERT INTO wie Folgenden wird HeidiSQL den Tisch kehren wir für
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;
Das obige Skript eine Tabelle generiert suchen wir suchen
DATA,RANK
1,1
2,2
3,3
4,4
5,5
NULL,0
Könnte jeder Guru aufklären, warum die ALTER TABLE/INSERT INTO nicht funktioniert?
Die SQL-Geige ist hier verfügbar:
http://sqlfiddle.com/#!9/d2837/2
Es ist nicht notwendig, hier IHRE FRAGE TITEL brüllen. Es wird deine Hilfe nicht schneller bekommen, es macht die Frage schwieriger zu lesen, und es ist unhöflich und nervig, ohne Grund zu schreien. Es ist klar, dass Ihre FESTSTELLTASTE nicht blockiert ist, weil Sie es geschafft haben, einen Teil des Textes in Ihrer Frage selbst zu erfassen. Bitte hör auf. Vielen Dank. –
Warum DOUBLE ?????? – Strawberry