Выбрать временный столбец с добавленными возрастающими значениями
Я новичок в этом форуме, и я изучаю 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. Если я найду это решение, я опубликую его здесь.