2016-07-21 3 views
1

Я хотел бы спросить, как должно быть написано заявление MySQL, в котором уникальные идентификаторы создаются в отдельных строках результата (но на самом деле не существует в таблице)Mysql заявление с уникальным идентификатором создано

Например, содержание стол 'ABC' является:

имя типа

John A

Mary B

Peter C

Фред

Gary C

Susan D

Алану

Когда MySQL оператор SELECT * от ABC, где тип = 'А' используется, результатом является

название типа

John A

Фред

Алану

Но я хотел бы поставить уникальные идентификаторы в каждой строке результата MySQL, но идентификаторы НЕ на самом деле положить в таблице , Например,

типа

(NEWID) Название

1 John A

2 Фред

3 Алану

Затем строка может быть дополнительно поиск, используя следующий оператор mysql.

SELECT * FROM ABC где (NEWID) = '1'

В результате получается:

имя (NEWID) Тип

1 John A

Спасибо.

ответ

1

Вы можете добавить столбец автоинкрементного

ALTER TABLE your_table ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY; 
+0

Действительно ли ALTER TABLE вставляет таблицу в mysql? – CKH

+0

. Таблица изменений добавляет столбец, а не таблицу .. и автоинкремент добавляет uniqe id – scaisEdge

+0

. Затем мы используем SELECT * from 'your_table' WHERE id = 'X' для извлечения определенной информации о строке после этого? – CKH

1

Вам нужно добавить поле PRIMARY KEY AUTO_INCREMENT в таблице.

Выполните следующие действия и проверить:

ALTER TABLE `your_table` 
ADD COLUMN `id_primary` int NOT NULL AUTO_INCREMENT FIRST , 
ADD PRIMARY KEY (`id_primary`); 

So в вашем случае было бы как:

ALTER TABLE `ABC` 
ADD COLUMN `id_primary` int NOT NULL AUTO_INCREMENT FIRST , 
ADD PRIMARY KEY (`id_primary`); 

Примечание:

Здесь рассматривается id_primary поле будет ваш newid

Как выглядит ваш стол перед этим обновлением. See Demo before altering table

После взгляда обновления на вашем столе в настоящее время See Demo after altering table

+0

Затем мы используем SELECT * from 'your_table' WHERE id_primary = 'X', чтобы извлечь определенную информацию о строке после того, как т? – CKH

+0

Да. просто сделайте это и сообщите нам. – 1000111

+0

Нужно ли переименовывать таблицу из одного в другое в инструкции ALERT TABLE, чтобы избежать путаницы с исходной таблицей «ABC»? Благодарю. – CKH

0

Вы можете использовать переменную для достижения этой цели, но как @ 1000111 сказал, правильно, вы должны do is alter your table:

select * 
from (
    select abc.*, @newid := @newid + 1 as newid 
    from abc 
    cross join (select @newid := 0) t 
    where type = 'A' 
) t1 
where t1.newid = 1 
+1

@Strawberry. Я знаю это, но, как я уже сказал, правильная вещь - это изменить его стол. Я думаю, что нет необходимости быть настолько скупым, чтобы говорить «бессмысленно», SO - это открытое, доброе, прекрасное сообщество, то, что вы говорите, может позволить нам или только мне осмелиться ответить на вопрос, это ваша цель или цель SO? – Blank

+0

Я думаю, что ваш честный просто приходит из вашего среднего !!! @Strawberry – Blank

+0

@Strawberry Опять же, это утверждение также исходит из вашего среднего !!! – Blank

Смежные вопросы