一尘不染

LAST_INSERT_ID()返回多行0?

sql

现在在phpMyAdmin中工作:

order 表结构:

OrderID     int(11)  auto_increment
CustomerID  varchar(50)
BillAddr    varchar(200)
ShipAddr    varchar(200)
Date            date
Total           double

该表当前有4行数据,具有不同的OrderID。

SQL:

SELECT LAST_INSERT_ID() FROM `order`

结果:

LAST_INSERT_ID()
0
0
0
0

我期待第四行OrderID-只是一个数字,但是phpMyAdmin中的每一行都有一个0。


阅读 173

收藏
2021-03-10

共1个答案

一尘不染

LAST_INSERT_ID()返回最后插入的行的ID,并且未绑定到任何表。因此,如果您创建一个新行:

INSERT INTO table VALUES('a', 'b', 'c');

它将返回最后一个id(新主键具有的任何值)。

SELECT LAST_INSERT_ID();
=> 123

有关详细信息,请查看 手册

LAST_INSERT_ID()(不带参数)返回BIGINT(64位)值,该值表示由最近执行的INSERT语句为AUTO_INCREMENT列设置的第一个自动生成的值,以影响该列。例如,在插入生成一个AUTO_INCREMENT值的行之后,您可以像这样获得该值:

如果您只想获取表中的最后一个ID,可以执行以下操作:

SELECT id FROM table ORDER BY id DESC LIMIT 1;
2021-03-10