如何在没有'id'列的MySql中获取最后插入的记录?

Posted

技术标签:

【中文标题】如何在没有\'id\'列的MySql中获取最后插入的记录?【英文标题】:How to get last inserted record in MySql which does not have 'id' column?如何在没有'id'列的MySql中获取最后插入的记录? 【发布时间】:2019-09-18 05:12:04 【问题描述】:

对于具有 'id' 列的表,我们可以使用 select last_insert_id() 来检索最后插入行的 id,但在我的表中我没有使用 'id' 列。那么如何检索最后一行呢?

表结构为:

uuid varchar(255) UNIQUE NOT NULL,
version bigint(20) DEFAULT NULL,
criteria_json text,
date_created varchar(30) NOT NULL

【问题讨论】:

如果您在插入时有datetime 列,您可以获得最新的。或分享您的表格结构以进一步了解。 uuid varchar(255) UNIQUE NOT NULL , version bigint(20) DEFAULT NULL, criteria_json text,date_created varchar(30) NOT NULL, 您可以使用date_created 作为标识符,但如果在同一秒内发生多个插入,那么您将遇到困难,最好您有明确的 AI id。 既然您没有id 列,请您解释一下为什么需要last_insert_id 在 sql 表中,除了在列中明确定义的之外,没有排序的概念。因此,除非您添加合适的列,否则无法以任何有意义的可靠方式完成。 【参考方案1】:

函数LAST_INSERT_ID() 返回此会话中插入的最后一行的AUTOINCREMENT 列的值。其他同时进行的会话不会影响此值。

由于您似乎没有AUTOINCREMENT 列,因此不会为该表返回任何内容。请参阅mysql Manual。

【讨论】:

【参考方案2】:

date_created 更改为时间戳DATETIME(6)),它将记录毫秒,使用下面的查询,

select * from yourtable order by date_created  desc limit 1

【讨论】:

这似乎不适用于一次多次插入。 尝试使用 DATETIME(6) 创建列

以上是关于如何在没有'id'列的MySql中获取最后插入的记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在mssql中获取最新自增ID的值

oracle 11g - 在oracle 11g数据库中获取标识列的最后一个插入ID的方法是什么?

如何在 PHP 中获取 MySQL 表的最后插入 ID?

Informix:如何获取最后插入记录的 id

我似乎无法从 MySQL 获取最后插入的记录/ID

如何在 MySQL 中获取多个插入行的 ID?