2012-02-03 2 views
0

Я пишу запрос и выдаю таблицу на выходе, но я хочу, чтобы каждая строка моей таблицы имела номер автоматически, который начинается с 1. Например, я хочу, чтобы в моей таблице столбец «число», первая строка моей таблицы имеет 1 в этом столбце, вторая строка моей таблицы имеет 2 в этой колонке, в третьей строке моей таблицы есть 3 в этой колонке, ... Как это сделать? благодаряСоздание автоматических номеров в MySQL

** Моя СУБД MySQL **

+0

Точный дубликат [ROW_NUMBER() в MySQL] (http://stackoverflow.com/questions/1895110/row-number-in-mysql). Другие СУБД могут сделать это с помощью ROW_NUMBER, вы должны эмулировать его в MySQL. См. Ответ OMG Ponies, а не принятый – gbn

ответ

1

Используйте переменную и увеличить его, как следующее.

set @num:=0; 
select *, @num:[email protected]+1 `Row` from names; 

Пример

mysql> create table names(name varchar(10) primary key)engine=Innodb charset=utf8 collate utf8_general_ci; 
Query OK, 0 rows affected (0.09 sec) 

mysql> insert into names values('a'), ('b'), ('cat'), ('dog'), ('parrot'), ('bird'); 
Query OK, 6 rows affected (0.04 sec) 
Records: 6 Duplicates: 0 Warnings: 0 

mysql> set @num:=0; select *, @num:[email protected]+1 `Row` from names; 
Query OK, 0 rows affected (0.00 sec) 

+--------+------+ 
| name | Row | 
+--------+------+ 
| a  | 1 | 
| b  | 2 | 
| bird | 3 | 
| cat | 4 | 
| dog | 5 | 
| parrot | 6 | 
+--------+------+ 
6 rows in set (0.00 sec) 

Примечание: Если вы используете * убедитесь, что он предшествует.

1

AUTO_INCREMENT является то, что вы ищете

Как это:

CREATE TABLE animals (
    id MEDIUMINT NOT NULL AUTO_INCREMENT, 
    name CHAR(30) NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=MyISAM; 

Взято отсюда: http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

EDIT: На основании комментария кто-то может хотите добавить это вручную. Вы выбираете максимальное значение из вашей поданной, увеличиваете на 1, а затем вставляете ее в свою таблицу.

SELECT MAX(id) FROM animals 
+0

Как я могу использовать этот атрибут в запросе, потому что мой запрос формируется из трех или более таблиц. –

+0

Вы используете это при создании своей таблицы. Не нужно добавлять его каждый раз в запрос. Он просто работает сам по себе. – Mike

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