如何在没有'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中获取最后插入的记录?的主要内容,如果未能解决你的问题,请参考以下文章