Mysql 有人能详细说明一下'SELECT LAST_INSERT_ID()'语句吗?

Mysql 有人能详细说明一下'SELECT LAST_INSERT_ID()'语句吗?,mysql,sql,Mysql,Sql,我一直认为,可以使用SELECT从表中选择列。然而,当我看到SELECT LAST_INSERT_ID时,我被甩了。我理解它的作用。。。但我不明白我们怎么能像那样简单地要求最后一个插入的id。SELECT关键字不希望在之后立即看到列名吗。。。那么该函数调用如何满足该要求呢?SELECT语句通常使用FROM子句从表中的行中选择列以及列和常量上的表达式 如果没有FROM子句,SELECT只计算表达式并返回一行。函数LAST_INSERT_ID只是一个返回值的表达式,因此: SELECT LAST_I

我一直认为,可以使用SELECT从表中选择列。然而,当我看到SELECT LAST_INSERT_ID时,我被甩了。我理解它的作用。。。但我不明白我们怎么能像那样简单地要求最后一个插入的id。SELECT关键字不希望在之后立即看到列名吗。。。那么该函数调用如何满足该要求呢?

SELECT语句通常使用FROM子句从表中的行中选择列以及列和常量上的表达式

如果没有FROM子句,SELECT只计算表达式并返回一行。函数LAST_INSERT_ID只是一个返回值的表达式,因此:

SELECT LAST_INSERT_ID()
返回一个结果集,其中包含一行和一个未命名列

有些数据库不喜欢没有FROM的SELECT。甲骨文就是其中之一。它需要FROM子句,并提供一个包含一列和一行的表。MySQL还支持dual,因此您可以编写:

SELECT LAST_INSERT_ID()
FROM dual;

如果您想在MySQL中包含WHERE子句并选择WHERE requires FROM,这很方便。

您可以在MySQL中选择任何表达式,例如选择5+4;。我不知道为什么这个问题被否决了。这似乎是一个Java程序员提出的一个真诚的问题,他在堆栈溢出方面有着相当丰富的经验。@GordonLinoff谢谢你。非常感谢。把“选择”看作是“给我”的意思,其余的都是有意义的。好吧,我只是在阅读,就在我认为我已经把它全部涵盖了的时候。。。我又被甩了。该页面提到,如果当前id为1,并且您再插入三行,然后使用select last_insert_id,那么它将为您提供值2,而不是4。这是怎么回事?为什么不应该是4?我想这会返回插入的最新id。哇。。令人惊叹的谢谢你提供的信息。我想你提到过可以用SELECT指定3件事。。。即列名(即select fname)、表达式(即select last_insert_id)和常量。然而,为什么那些被称为表达式而不是函数调用。。。第二,你有带常量的select语句的例子吗?@感恩。select 1是带有常量的select语句。选择1,因为x有一个名为的常量。而且,函数调用只是表达式的一种类型。。。我懂了。再次感谢你。