MySQL 自增ID值 获取的方法

来源:互联网 发布:骑士队热区数据 编辑:程序博客网 时间:2024/05/17 06:09

 如何获取 MYSQL中某个表的自增ID字段的下一个值 ?

方法一: 

例如:在zx_ofc.task_order表中task_id是自增字段。

它的下一个自增字段可以通过下面的语句获得

SELECT `AUTO_INCREMENT` FROM  INFORMATION_SCHEMA.TABLES 

WHERE TABLE_SCHEMA = 'zx_ofc' AND  TABLE_NAME  = 'task_order';

该数值其实就是下面SQL语句执行后输出的数值 + 1.
select max(zx_ofc.task_order.task_id) from zx_ofc.task_order;


方法二:

SHOW TABLE STATUS;

得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID。


如何返回插入数据后的那个自增ID字段的值?

方法:使用  last_insert_id() 函数。

SQL例子如下:

下面的这个表初始空的,执行下面的语句系列。

insert into thb_test(keyword1) VALUES("thb");

select last_insert_id(); 

//输出值为1

1

//意味最后一条SQL插入语句的自增ID是1

我们再来执行多条insert语句,看看结果如何。

insert into thb_test(keyword1) VALUES("bill");

insert into thb_test(keyword1) VALUES("bigtree");

select last_insert_id(); 

//输出数值为3,意味最后一条SQL插入语句的自增ID是3

3

上面例子说明 执行两个insert语句,last_insert_id()返回最后一个插入语句的结果。

mysql> select @@version;

+------------+
| @@version  |
+------------+
| 5.5.24-log |
+------------+
1 row in set (0.17 sec)

我在 Mysql 5.5.24上验证过了:last_insert_id()返回最后一个插入语句的自增结果。


网络上的说法: ”如果一句INSERT插入多条,返回的是第一个ID”  需要解释下。

即如果用一条insert语句插入了多条语句,则该函数会返回第一个ID。

在下面的 MySQL  官方文档中,有下面的解释,注意下绿色背景的SQL语句

https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id

mysql> USE test;Database changedmysql> CREATE TABLE t (    ->   id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,    ->   name VARCHAR(10) NOT NULL    -> );Query OK, 0 rows affected (0.09 sec)mysql> INSERT INTO t VALUES (NULL, 'Bob');Query OK, 1 row affected (0.01 sec)mysql> SELECT * FROM t;+----+------+| id | name |+----+------+|  1 | Bob  |+----+------+1 row in set (0.01 sec)mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                1 |+------------------+1 row in set (0.00 sec)mysql> INSERT INTO t VALUES    -> (NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');Query OK, 3 rows affected (0.00 sec)Records: 3  Duplicates: 0  Warnings: 0mysql> SELECT * FROM t;+----+------+| id | name |+----+------+|  1 | Bob  ||  2 | Mary ||  3 | Jane ||  4 | Lisa |+----+------+4 rows in set (0.01 sec)mysql> SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+|                2 |+------------------+1 row in set (0.00 sec)
 


原创粉丝点击