У меня есть таблица с двумя псевдонимами столбцов (все в нижнем регистре) и упорядочением
как я могу установить числа от 0 до x на основе псевдонимов столбцов в алфавитном порядке?
обновить столбец на основе порядка сортировки другого запроса (выберите mytable order by alias)?
to get
alias | ordering
abf-ergterw | 0
crdsv-dfgdfg | 2
bggg-rgewrdg | 1
dxgg-rgewrdg | 3
что-то вроде
SET @count = 0;
UPDATE mytable SET ordering = @count:= @count + 1;
но на основе псевдонима столбца a = 1, b = 2, c = 3,....
благодарю вас
Вы можете использовать ROW_NUMBER
:
SELECT *, ROW_NUMBER() OVER(ORDER BY alias ASC) - 1 AS ordering
FROM tab
ORDER BY ordering;
И UPDATE
:
UPDATE tab a
JOIN (
SELECT *, ROW_NUMBER() OVER(ORDER BY alias ASC) - 1 AS ord
FROM tab
) b ON a.alias = b.alias
SET a.ordering = b.ord
;
ROW_NUMBER() OVER(ORDER BY alias ASC)
будет работать только в MySQL 8.0+. И MySQL 8.0 не готов к производству.
Вы можете использовать предложение ORDER BY в инструкции UPDATE:
SET @count = -1;
UPDATE mytable
SET ordering = @count:= @count + 1
ORDER BY alias ASC;