У меня есть следующие записи, и мне нужно вставить новый столбец с именем "records" с сгенерированными идентификаторами в порядке возрастания; как мы это делаем в базе данных MySQL?
TERM_CODE SUBJ_CODE CRSE_NUMB SCHD_CODE CREDIT_HRS
201710 CHEN 311 L 93
201710 CHEN 311 L 96
201710 CHEN 314 L 78
201710 CHEN 314 L 81
быть следующим:
Record TERM_CODE SUBJ_CODE CRSE_NUMB SCHD_CODE CREDIT_HRS
1 201710 CHEN 311 L 93
2 201710 CHEN 311 L 96
3 201710 CHEN 314 L 78
4 201710 CHEN 314 L 81
Мой DDL следующий:
Field Type Collation Null
TERM_CODE varchar(28) utf8_bin NO
SUBJ_CODE varchar(20) utf8_bin NO
CRSE_NUMB varchar(24) utf8_bin NO
CRSE_LVL varchar(50) utf8_bin YES
PIDM double NO
Count double YES
Earned varchar(20) utf8_bin YES
Job_Type varchar(50) utf8_bin YES
COST varchar(50) utf8_bin YES
COST_DES varchar(83) utf8_bin YES
Этот вопрос можно разбить на три этапа:
1. Добавление столбца
Предположим, что имя таблицы table_name
, затем добавить столбец с названием records
с типом int
, необходимо выполнить следующую команду:
ALTER TABLE table_name ADD record int;
2. Обновление этого столбца для всех строк с последовательностью чисел
Для этого вам понадобится дополнительное поле. Предположим, мы выбрали имя @rank
для этого поля. Вот как вы обновляете этот столбец с последовательностью чисел:
SET @rank:=0;
update table_name
set record=@rank:=@rank+1;
3. (Необязательно) Добавление свойства AUTO_INCREMENT
Возможно, вы захотите добавить в запись свойство AUTO_INCREMENT
, так что вам не нужно вручную определять значение record
. Для этого record
столбца должна быть первичным ключом.
Если в таблице уже есть первичный ключ, вы должны сначала перенести его, используя следующую команду:
ALTER TABLE table_name DROP PRIMARY KEY;
А затем вы можете добавить свойство AUTO_INCREMENT
в запись при настройке на первичный ключ:
ALTER TABLE table_name CHANGE record record int AUTO_INCREMENT PRIMARY KEY;