在MySQL中自动生成数字
我写了一个查询,并在输出中给出了一个表,但我希望表中的每一行都自动有一个从1开始的数字。例如,我希望我的表格有“number”列,表格的第一行在该列中有1,表格的第二行在该列中有2,表格的第三行在该列中有3。。。 我该怎么做? 谢谢在MySQL中自动生成数字,mysql,database,Mysql,Database,我写了一个查询,并在输出中给出了一个表,但我希望表中的每一行都自动有一个从1开始的数字。例如,我希望我的表格有“number”列,表格的第一行在该列中有1,表格的第二行在该列中有2,表格的第三行在该列中有3。。。 我该怎么做? 谢谢 **My DBMS是MySQL**将主键设置为自动递增字段。 此处的更多信息:将主键设置为自动递增字段。 更多信息请点击此处:您需要的是自动增量 像这样: CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_
**My DBMS是MySQL**将主键设置为自动递增字段。
此处的更多信息:将主键设置为自动递增字段。
更多信息请点击此处:您需要的是自动增量 像这样:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
摘自这里:
编辑:根据某人可能想要手动添加的注释。从字段中选择最大值,递增1,然后将其插入表中
SELECT MAX(id) FROM animals
自动增量是您需要的 像这样:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
摘自这里:
编辑:根据某人可能想要手动添加的注释。从字段中选择最大值,递增1,然后将其插入表中
SELECT MAX(id) FROM animals
使用变量并按如下方式递增
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)
注意:如果您使用
*
请确保它在前面。使用变量并按如下方式递增它
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)
注意:如果使用
*
请确保它在前面。我如何在查询中使用此属性,因为我的查询是由3个或更多表组成的。您可以在创建表时使用此属性。不需要每次在查询中添加它。它只是自己工作。我如何在查询中使用此属性,因为我的查询是由3个或更多表组成的。您在创建表时使用此属性。不需要每次在查询中添加它。它只不过是自己工作。完全是它的复制品。其他RDBMS可以通过ROW_NUMBER实现这一点,您必须在MySQL中模拟它。请参阅OMG小马的答案,而不是公认的答案的精确副本。其他RDBMS可以通过ROW_NUMBER实现这一点,您必须在MySQL中模拟它。见OMG小马的答案,而不是公认的答案