【问题标题】: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 表中,除了在列中明确定义的之外,没有排序的概念。因此,除非您添加合适的列,否则无法以任何有意义的可靠方式完成。

标签: mysql sql database


【解决方案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) 创建列
    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多