Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中自动生成数字_Mysql_Database - Fatal编程技术网

在MySQL中自动生成数字

在MySQL中自动生成数字,mysql,database,Mysql,Database,我写了一个查询,并在输出中给出了一个表,但我希望表中的每一行都自动有一个从1开始的数字。例如,我希望我的表格有“number”列,表格的第一行在该列中有1,表格的第二行在该列中有2,表格的第三行在该列中有3。。。 我该怎么做? 谢谢 **My DBMS是MySQL**将主键设置为自动递增字段。 此处的更多信息:将主键设置为自动递增字段。 更多信息请点击此处:您需要的是自动增量 像这样: CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_

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


**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小马的答案,而不是公认的答案