如何在MySQL中获取最后4个插入的ID

时间:2014-05-02 14:51:22

标签: php mysql sql

我想从数据库表中获取最后4个ID,这基本上应该是4个最新/最近添加的字段。

我知道PHP中有一个lastInsertId()函数可以获得最后一个函数。

例如,如果我将最后插入的ID存储到这样的变量中:

$productID = $db->lastInsertId(); 

但是如何才能获得最后4个ID而不是最后一个?

有没有快速解决这个问题?

假设有一个ID,它是每条记录的主键。

修改

我的ID字段是自动递增的,因为我之前忘记提及

3 个答案:

答案 0 :(得分:3)

select WHATEVER_FIELDS from TABLE order by IDFIELD desc limit 4

答案 1 :(得分:0)

MYSQL: LAST_INSERT_ID FUNCTION

我将在这里提到一些提到的注释

  • 如果最新的INSERT或UPDATE语句设置了多个AUTO_INCREMENT值,则LAST_INSERT_ID函数仅返回第一个AUTO_INCREMENT值。
  • LAST_INSERT_ID函数在逐个客户端的基础上返回最后一个AUTO_INCREMENT值,因此它只返回客户端的最后一个AUTO_INCREMENT值。该值不受其他客户端的影响。
  • 执行LAST_INSERT_ID函数不会影响LAST_INSERT_ID返回的值。

因此,为了检索最后4个插入的ID,您必须检查您正在进行的每个插入/更新的ID。

选择最后4行不是一个选项 - 考虑这个:  * person A使用autoid 1插入行  *人B用autoid 2插入行  * person A使用autoid 3,4插入行  *人B用autoid 5插入行  * person A使用autoid 6插入行

如果您是A人,并且在每次插入后检查上次插入的ID ,您将获得:1, 3, 4, 6如果您是B人,则会获得2, 5 如果您是A人并使用该查询进行选择,您将获得3,4,5,6

还有一个 - 如果你的行没有自动增加ID,这就是我正在做的事情:

  • 添加索引(char 32)
  • 的列
  • 对插入填充该列包含一些数据(唯一);
  • 插入后 - SELECT行,其中列是该数据
  • 将行列更新为null(现在不需要)

答案 2 :(得分:-1)

只有 1 最后插入的ID,并且在每次进行插入的查询之后。因此lastInsertId()返回该ID,并在插入完成后调用它。

这意味着您必须在每次插入查询后调用lastInsertId() 4次并将其结果存储在数组中。

编辑:我知道可以使用SELECT查询最后4个ID,但这不是OP要求的。如果OP需要DB中的最后4个ID,而不是最后插入的4个ID,那么问题应该以完全不同的方式形成。

相关问题