Выбрать временный столбец с добавленными возрастающими значениями

Я новичок в этом форуме, и я изучаю MYSQL.

Я создаю базу данных игроков NBA, и я добавил около 540 записей игроков в таблицу nba_players. Когда записи были вставлены, для столбца nba_players.player_id было установлено значение auto_increment, но оно увеличивалось, начиная с 531, и заканчивалось чем-то 1000. Вместо того, чтобы обрезать всю таблицу и повторно применить оператор INSERT, я хотел бы попробовать другое решение.

Я использую верстак 8.0, поэтому я использую комбинацию языка запросов и манипулирования таблицами через пользовательский интерфейс верстака.

Таким образом, альтернативное решение, над которым я работаю, - это создать временный столбец, используя инструкцию SELECT, чтобы вызвать временный столбец со значениями от 2 до 540. Затем я скопировал бы весь столбец и затем использовал бы верстак для вставки строк, используя вставку правой кнопкой мыши. Строки 'в новый запрос SELECT:

SELECT player_id FROM nba_players

Я пробовал SELECT 2:540 как temp_column. Пожалуйста, не смейтесь LOL Я пытаюсь стать более свободно;)

Я подозреваю, что это может быть сделано с помощью команды UPDATE, но, как я уже сказал, я хотел использовать это решение, чтобы добавить больше инструментов для работы с MYSQL в свой арсенал.

2 ответа

Если ваш стол (с 535 игроками) не имеет значения между 1 и 539 и не перенесен на другие столы с использованием внешних ключей, вы можете попробовать использовать var и update

  set @myid:=0;

  update 
    nba_players
    set player_id =@myid:=@myid+1
    order by player_id; 

в противном случае вы можете сделать то же самое в допустимом диапазоне (например: @myid= 10000) для перемещения идентификатора за пределы диапазона, а затем повторить форму команды "0".

Вопрос о том, как создать временную таблицу в MySQL, которая имеет один столбец с рекурсивным значением от 1 до 540, заключается в использовании рекурсивного CTE или рекурсивного выражения общей таблицы. Конкретный запрос выглядит следующим образом:

С RECURSIVE cte_count (n) as (выберите 1 объединение всех, выберите n + 1 из cte_count, где n < 540) выберите n из cte_count;

Теперь, возможно, есть оператор обновления, который может добавить результат в столбец player_id. Если я найду это решение, я опубликую его здесь.

Другие вопросы по тегам