使用auto_increment时,如何获取新行的ID?

时间:2013-01-11 02:43:32

标签: mysql

我的数据库有,

mysql> describe students;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(50) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

我想插入2名学生 - 但我想立即知道他们的身份

mysql> insert into students values (null, 'tom'), (null, 'larry');

如果插入实际返回了ID的结果集,我想要它... aka ...

mysql> select id from (insert into students values (null, 'tom'), (null, 'larry'));

姆?

1 个答案:

答案 0 :(得分:3)

您可以使用LAST_INSERT_ID()函数获取批次的第一个AUTO INCREMENT值,然后使用MAX获取最大值。

  

LAST_INSERT_ID()(不带参数)返回BIGINT(64位)值,表示最近执行的AUTO_INCREMENT列为INSERT列设置的第一个自动生成的值{{ 1}}语句来影响这样一个列。

Reference

> INSERT INTO students VALUES (NULL, 'tom'), (NULL, 'larry');

> SELECT LAST_INSERT_ID() FROM students LIMI 1
| LAST_INSERT_ID() |
--------------------
|                1 |
> SELECT MAX(id) FROM students
| MAX(ID) |
-----------
|       2 |
> INSERT INTO students VALUES (NULL, 'billy'), (NULL, 'jane'), (NULL, 'fred');

> SELECT LAST_INSERT_ID() FROM students LIMIT 1
| LAST_INSERT_ID() |
--------------------
|                3 |
> SELECT MAX(id) FROM students
| MAX(ID) |
-----------
|       5 |