gpt4 book ai didi

mysql - 执行 SELECT MAX(id) 等查找最后插入的行在概念上是否正确?

转载 作者:IT王子 更新时间:2023-10-29 00:31:04 25 4
gpt4 key购买 nike

当我发现这个用于获取最后插入的行的 id 的模式时,我正在审查一个 Drupal 模块:

SELECT MAX(id) FROM ... WHERE ...

其中 id 是一个以通常的自动增量方式工作的字段。

这在概念上是正确的吗?有没有这种模式在 MySQL/PostgreSQL 环境中会失败的情况?

编辑:

感谢您的精彩评论和回答!

我应该澄清一下我的问题:我的意思是有人想找出最后插入的行的 ID 而不考虑 session

最佳答案

这似乎是主观的,但我会说不,这在概念上是不正确的,因为:

  • 你想要最近插入的行
  • 但您的查询查看的是最大 id

是的,最大 ID 和最近插入之间存在某种关系,但请考虑以下几点:

  • 如果最近插入的行被删除了怎么办?

关于 MySQL 的回答:你会得到不同的结果。请注意,甚至不必是多线程或多个进程就会失败。那是因为它们是两种不同的东西(无可否认,它们通常会产生相同的结果)。

select max(id) from <tablename>

对比

select last_insert_id()

(猜猜哪个是对的。)


@Dems 指出 OP 含糊不清。我将阐明我的主要观点:

我们正在谈论三种不同的信息:

  • 最大 id
  • id 最近插入的行,特定于 session
  • id 最近插入表中的行(无论 session 如何)

危险的是,有时候,查询一个会给出另一个的正确答案 -- 但并非总是如此

关于mysql - 执行 SELECT MAX(id) 等查找最后插入的行在概念上是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8345399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com