Как добавить столбец автоинкрементной идентичности в таблицу с данными - PullRequest
0 голосов
/ 01 января 2019

Как добавить столбец автоинкрементной идентичности в таблицу с данными.то есть.Новое Добавлено заполнение столбца идентификаторами для старых данных. Старая таблица пользователя с данными

Имя, адрес электронной почты,

abc, abc@gmail.com

abcd, abcd@gmial.com

ОЖИДАЕМЫЙ ВЫХОД

id, имя, адрес электронной почты,

1, abc, abc @gmail.com

2, abcd, abcd@gmial.com

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Таблица изменения не позволяет вам заказать новое поле, поэтому, возможно, вам нужно сделать это в 2 этапа.Например,

DROP TABLE IF EXISTS T;
CREATE TABLE T (NAME VARCHAR(10),EMAIL VARCHAR(20));
INSERT INTO T VALUES('ABC','abc@gmail.com'),('ABCD','abcd@gmial.com');
ALTER TABLE T
    ADD COLUMN  ID INT FIRST;

UPDATE T JOIN(
SELECT NAME, ROW_NUMBER() OVER (ORDER BY NAME DESC) RN FROM T) s
ON S.NAME = T.NAME
SET T.ID = S.RN
;

ALTER TABLE T
    MODIFY COLUMN ID INT AUTO_INCREMENT PRIMARY KEY;

SELECT * FROM T;

Где идентификатор добавляется, а затем обновляется для существующих записей, используя row_number с порядком по

С таким результатом

+----+------+----------------+
| ID | NAME | EMAIL          |
+----+------+----------------+
|  1 | ABCD | abcd@gmial.com |
|  2 | ABC  | abc@gmail.com  |
+----+------+----------------+
2 rows in set (0.00 sec)

Второй оператор Alter затем модифицируетЯ бы.

show create table t;

CREATE TABLE `t` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(10) DEFAULT NULL,
  `EMAIL` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Если вы не используете mysql версии 8 или выше, вам нужно заменить бит row_number на симуляцию номера строки с использованием переменных.В любом случае это не имеет никакого значения, так как любой запрос все равно должен включать заказ, чтобы получить желаемый результат.

0 голосов
/ 01 января 2019

Вы можете написать:

ALTER TABLE MY_TABLE ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...