在MySQL中生成自动数字

时间:2012-02-03 08:17:25

标签: mysql database

我写了一个查询并在输出中给出了一个表但是我希望我的表中的每一行都有一个自动从1开始的数字。例如,我希望我的表有“数字”列,表示我表的第一行在该列中有1个,我的表的第二行在该列中有2个,我的表的第三行在该列中有3个,... 我怎样才能做到这一点 ? 感谢

**我的DBMS是MySQL **

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用变量并按如下方式递增。

set @num:=0; 
select *,  @num:=@num+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:=@num+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)

注意:如果您使用*,请确保它先于。

答案 2 :(得分:0)

使主键成为自动增量字段。 更多信息:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html