Mysql 使用where id=last\u insert\u id()返回空结果集

Mysql 使用where id=last\u insert\u id()返回空结果集,mysql,Mysql,在mysql表中插入一行数据后,我尝试在mysql中获取一行数据 从传入的_短信中选择*,其中id=last_insert_id()但这将返回一组空结果,尽管我确实插入了新行,并且我的表包含数据 如何使查询返回一些数据?标准模式是在发出INSERT语句的同一会话中,在成功插入语句后立即执行SELECT LAST\u INSERT\u ID()语句 有几个可能的原因,你正在尝试的是不起作用。我没有见过像您这样在SELECT语句中使用的LAST\u INSERT\u ID()函数;我不确定是否定义了

在mysql表中插入一行数据后,我尝试在mysql中获取一行数据

从传入的_短信中选择*,其中id=last_insert_id()但这将返回一组空结果,尽管我确实插入了新行,并且我的表包含数据


如何使查询返回一些数据?

标准模式是在发出
INSERT
语句的同一会话中,在成功插入语句后立即执行
SELECT LAST\u INSERT\u ID()
语句

有几个可能的原因,你正在尝试的是不起作用。我没有见过像您这样在SELECT语句中使用的
LAST\u INSERT\u ID()
函数;我不确定是否定义了该行为。我从来没见过它被这样使用过

正常模式为:

INSERT INTO mytable (col) VALUES (val);
-- check if statement succeeded; if it successfully inserted a row
SELECT LAST_INSERT_ID();
-- retrieve returned value
然后在后续处理中使用检索到的值

(再次)注意,
LAST\u INSERT\u ID()
的引用必须在执行插入的同一会话中进行,并且应该在发出任何其他SQL语句之前进行


[LAST\u INSERT\u ID()MySQL][1][1]:如果我使用的是
new.ID
,那么相同的规则是否适用于会话以及任何其他sql语句之前?@user3272483:No。在插入后的
触发器上下文中,
NEW.id
标识符是对存储在行的id列中的值的引用。您可以在触发器正文中执行其他SQL语句,
NEW.id
标识符仍然引用存储在当前行的id列中的值。@user3272383:原始问题忽略了触发器的任何内容。在插入后的
触发器中,检索分配给自动增量列的值的正常模式是引用
NEW.id
(或者,无论自动增量列的名称是什么,都是NEW.id)