У нас есть таблица, TABLE_1:Включить новый рейтинг ошибки столбца
DATA
1
2
3
4
5
NULL
Мы хотим, чтобы создать столбец RANK на основе данных столбца
DATA,RANK
1,1
2,2
3,3
4,4
5,5
NULL,0
Ниже наш код:
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;
Вышеуказанный запрос генерирует только 0 в столбце RANK
DATA,RANK
1,0
2,0
3,0
4,0
5,0
NULL,0
Однако, если мы просто выполнить запрос по, без изменения таблицы и 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
Не надо орать Ваш вопрос TITLE здесь. Это не поможет вам быстрее, это затрудняет чтение вопроса, и это грубо и раздражает, чтобы быть БЕСПЛАТНЫ без причины. Понятно, что ваш CAPS LOCK не застрял, потому что вам удалось правильно обработать некоторые тексты в вашем вопросе. Пожалуйста остановись. Благодарю. –
Почему DOUBLE ?????? – Strawberry