Mysql @count: = @count + 1 обновление столбца на основе порядка сортировки другого запроса

0

У меня есть таблица с двумя псевдонимами столбцов (все в нижнем регистре) и упорядочением

как я могу установить числа от 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,....

благодарю вас

  • 0
    Я хочу установить псевдоним столбца в базе данных, я знаю, как сортировать столбец
  • 0
    Определите столбец AUTO_INCREMENT!
Показать ещё 3 комментария
Теги:

2 ответа

0

Вы можете использовать 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
;

MySQL 8. 0+ Демоверсия

  • 0
    ROW_NUMBER() OVER(ORDER BY alias ASC) будет работать только в MySQL 8.0+. И MySQL 8.0 не готов к производству.
  • 0
    @RaymondNijland Да, я полностью осознаю это
Показать ещё 6 комментариев
0

Вы можете использовать предложение ORDER BY в инструкции UPDATE:

SET @count = -1;
UPDATE mytable
SET ordering = @count:= @count + 1
ORDER BY alias ASC;

Демо: http://sqlfiddle.com/#!9/34e664/1

  • 0
    ИДЕАЛЬНЫЙ ! именно мои потребности большое спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню