当前位置: 首页 > 面试题库 >

LAST_INSERT_ID()返回多行0?

苏鸿才
2023-03-14
问题内容

现在在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。


问题答案:

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;


 类似资料:
  • 问题内容: 我有一个MySQL问题,我认为这很容易。当我运行以下MySql查询时,我需要从table1返回LAST INSERTED ID: 如您所知,当前代码只会返回table2的LAST INSERT ID而不是table1,即使我插入到table2之间,也如何从table1获取ID? 问题答案: 您可以将最后一个插入ID存储在变量中: 或获取max id frm table1

  • 问题内容: 我正在执行此查询: 我正在尝试使其返回如下内容: 但是,我得到了错误: #1242-子查询返回的行数超过1。 我尝试将语句放置在子查询中,但是收到无效的语法错误。 问题答案: 您可以使用简单的分组方式在没有子查询的情况下进行尝试: 使用GROUP BY时,未分组的任何列都必须具有聚合子句(fe SUM或COUNT。)因此,在这种情况下,您必须对县名称,precienct.id和prec

  • 问题内容: 好的。简而言之,我正在尝试执行INSERT SELECT,例如: 当然,@key不会从每个插入中返回每个后续的LAST_INSERT_ID(),而是仅从最后一个插入返回ID。 基本上,我将旧的USER表拆分为ENTITY和USER,例如: 我为什么要这样做?基本上,我有一个“商店”实体,它将具有“用户”公用的字段,例如地址和电话号码。因此,任何“ ENTITY”都可能没有多个地址(送货

  • 5.3. 多返回值 在Go中,一个函数可以返回多个值。我们已经在之前例子中看到,许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息。下面的例子会展示如何编写多返回值的函数。 下面的程序是findlinks的改进版本。修改后的findlinks可以自己发起HTTP请求,这样我们就不必再运行fetch。因为HTTP请求和解析操作可能会失败,因此findlinks声明了2

  • 问题内容: 以下查询应返回从动漫中扮演角色的人物的姓名。但我收到以下错误: Blockquote ORA-01427:单行子查询返回多个行 提前致谢! 问题答案: 代替 使用 查询中有5个条件需要更改。 UPD 另外,您的查询等同于

  • 我用的是parse.com。每个包里面都有很多钻子,每个品类里面都有很多包。 我卡住了。然后(函数(result,result2,result3)在最后一行。promise可以有多个promise,它是可变的。有没有一种方法可以写出如下内容: 谢谢!