2012-02-03 63 views
0

我编写了一个查询并在输出中给出了一个表,但是我希望我的表的每一行都有一个从1开始的自动编号。例如,我希望我的表具有“数字”列我的表的第一行有1列,我的表的第二行有2列,我的表的第三行有3列,... 我该怎么做? 感谢在MySQL中生成自动编号

**我的DBMS是MySQL的**

+0

[MySQL中的ROW_NUMBER()的完全重复](http://stackoverflow.com/questions/1895110/row-number-in-mysql)。其他的RDBMS可以用ROW_NUMBER来做到这一点,你必须在MySQL中模拟它。请参阅OMG Ponies的答案,而不是接受的答案 – gbn 2012-02-03 08:25:52

回答

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

编辑:基于评论有人可能会想要手动添加。您从您的字段中选择最大值,增加1,然后将其插入到您的表格中。

SELECT MAX(id) FROM animals 
+0

如何在查询中使用此属性,因为我的查询是由3个或更多表格构成的。 – 2012-02-03 08:21:56

+0

您在创建表格时使用此选项。无需每次在查询中添加它。它只是单独工作。 – Mike 2012-02-03 08:30:12