现在在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。
答案 0 :(得分:6)
LAST_INSERT_ID()
返回最后一个插入行的id,并且不绑定到任何表。因此,如果您创建一个新行:
INSERT INTO table VALUES('a', 'b', 'c');
它将返回最后一个id(新主键具有的值)。
SELECT LAST_INSERT_ID();
=> 123
有关详细信息,请查看the manual:
LAST_INSERT_ID()(不带参数)返回一个BIGINT(64位)值,表示由最近执行的INSERT语句为AUTO_INCREMENT列设置的第一个自动生成的值,以影响此类列。例如,在插入生成AUTO_INCREMENT值的行后,您可以获得如下值:
如果您只想在表格中获取最后一个ID,可以这样做:
SELECT id FROM table ORDER BY id DESC LIMIT 1;
答案 1 :(得分:3)
如the manual中所述:
LAST_INSERT_ID()
(不带参数)返回BIGINT
(64位)值,表示为AUTO_INCREMENT
列设置的第一个自动生成的值通过最近执行的INSERT
语句来影响此类列。例如,在插入生成AUTO_INCREMENT
值的行后,您可以获得如下值:mysql> SELECT LAST_INSERT_ID(); -> 195
答案 2 :(得分:1)
这样做:
INSERT INTO `one`(`id`, `name`) VALUES (NULL,'shivam');
select last_insert_id();
插入后不执行任何其他查询,它们都应该一起执行
答案 3 :(得分:0)
我有同样的问题,解决方案是同时进行查询。换句话说,第一个查询和第二个(last_insert_id)查询应该同时执行。不是两个不同的执行。
答案 4 :(得分:0)
通过指示表,对所述表中的每一行重复select语句。
除了重复相同的值之外,它不会影响查询结果。
如果在phpmyadmin中运行,您可能需要检查Persistent Connections是否设置为TRUE,否则您将始终因LAST_INSERT_ID()而收到0。