我编写了一个查询并在输出中给出了一个表,但是我希望我的表的每一行都有一个从1开始的自动编号。例如,我希望我的表具有“数字”列我的表的第一行有1列,我的表的第二行有2列,我的表的第三行有3列,... 我该怎么做? 感谢在MySQL中生成自动编号
**我的DBMS是MySQL的**
我编写了一个查询并在输出中给出了一个表,但是我希望我的表的每一行都有一个从1开始的自动编号。例如,我希望我的表具有“数字”列我的表的第一行有1列,我的表的第二行有2列,我的表的第三行有3列,... 我该怎么做? 感谢在MySQL中生成自动编号
**我的DBMS是MySQL的**
使用一个变量,并增加它像以下。
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)
注:如果使用*
确保它的前面。
让你的主键自动递增领域。 这里更多的信息:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
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
如何在查询中使用此属性,因为我的查询是由3个或更多表格构成的。 – 2012-02-03 08:21:56
您在创建表格时使用此选项。无需每次在查询中添加它。它只是单独工作。 – Mike 2012-02-03 08:30:12
[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