0

我的数据库有,

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

我想插入 2 个学生 - 但我想立即知道他们的 ID

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

如果插入实际上返回了 ID 的结果集,我会喜欢它......又名......

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

嗯?

4

1 回答 1

3

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

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

参考

> 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
| 最大(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
| 最大(ID) |
------------
| 5 |
于 2013-01-11T02:46:25.200 回答