我的数据库有,
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'));
姆?
答案 0 :(得分:3)
您可以使用LAST_INSERT_ID()
函数获取批次的第一个AUTO INCREMENT
值,然后使用MAX
获取最大值。
LAST_INSERT_ID()
(不带参数)返回BIGINT
(64位)值,表示最近执行的AUTO_INCREMENT
列为INSERT
列设置的第一个自动生成的值{{ 1}}语句来影响这样一个列。
> 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 |