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');

insert が実際に ID の結果セットを返すといいのですが...別名...

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

うーん?

4

1 に答える 1

3

この関数を使用して、バッチLAST_INSERT_ID()の最初の値を取得し、次に最大値を取得できます。AUTO INCREMENTMAX

LAST_INSERT_ID()(引数なし) は、列に影響を与えるために最後に実行されたステートメントによって列BIGINTに設定された最初の自動生成値を表す (64 ビット) 値を返します。AUTO_INCREMENTINSERT

参照

> 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 |
于 2013-01-11T02:46:25.200 に答える