首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取Postgres中表的最后一条记录

获取Postgres中表的最后一条记录
EN

Stack Overflow用户
提问于 2011-06-07 23:44:35
回答 12查看 186.1K关注 0票数 55

我正在使用Postgres,无法获取我的表的最后一条记录:

代码语言:javascript
复制
 my_query = client.query("SELECT timestamp,value,card from my_table");

我如何知道时间戳是记录的唯一标识符?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-06-07 23:50:48

如果在“最后一条记录”下,您指的是具有最新时间戳值的记录,那么尝试这样做:

代码语言:javascript
复制
my_query = client.query("
  SELECT TIMESTAMP,
    value,
    card
  FROM my_table
  ORDER BY TIMESTAMP DESC
  LIMIT 1
");
票数 104
EN

Stack Overflow用户

发布于 2011-06-07 23:51:50

您可以使用

代码语言:javascript
复制
SELECT timestamp, value, card 
FROM my_table 
ORDER BY timestamp DESC 
LIMIT 1

假设您还想按timestamp排序

票数 22
EN

Stack Overflow用户

发布于 2018-07-05 03:29:39

简单方法: ORDER BY与LIMIT结合使用

代码语言:javascript
复制
SELECT timestamp, value, card
FROM my_table
ORDER BY timestamp DESC
LIMIT 1;

然而,LIMIT不是标准的,正如Wikipedia所说的那样,SQL标准的核心功能并没有显式地定义Nulls的默认排序顺序。最后,当多个记录共享最大时间戳时,只返回一行。

关系方式:

执行此操作的典型方法是检查是否没有任何行的时间戳高于我们检索的任何行。

代码语言:javascript
复制
SELECT timestamp, value, card
FROM my_table t1
WHERE NOT EXISTS (
  SELECT *
  FROM my_table t2
  WHERE t2.timestamp > t1.timestamp
);

这是我最喜欢的解决方案,也是我倾向于使用的解决方案。缺点是,当我们大致了解这个查询时,我们的意图并不是立即清晰的。

指导方式: MAX

为了避免这种情况,可以在子查询中使用MAX而不是关联。

代码语言:javascript
复制
SELECT timestamp, value, card
FROM my_table
WHERE timestamp = (
  SELECT MAX(timestamp)
  FROM my_table
);

但是如果没有索引,则需要对数据进行两次遍历,而前面的查询只需扫描一次即可找到解决方案。也就是说,我们在设计查询时不应该考虑性能,除非有必要,因为我们可以期待优化器随着时间的推移而改进。但是,这种特殊类型的查询非常常用。

炫耀方式:窗口函数

我不建议这样做,但也许你可以给你的老板留下一个好印象;-)

代码语言:javascript
复制
SELECT DISTINCT
  first_value(timestamp) OVER w,
  first_value(value) OVER w,
  first_value(card) OVER w
FROM my_table
WINDOW w AS (ORDER BY timestamp DESC);

实际上,这表明一个简单的查询可以用各种各样的方式表达(我还能想到其他几种方式),并且应该根据以下几个标准来选择其中一种形式:

关系型/指导型ways)

  • efficiency (关系型way)

  • expressiveness (简易/指导型)
  • )可移植性
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6267887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档