【问题标题】:getting the last occurence of a certain item in a sql request获取 sql 请求中某个项目的最后一次出现
【发布时间】:2023-04-07 23:02:02
【问题描述】:

我正在尝试向我的数据库写入 sql 请求,以获取某个项目的最后一次出现,我的意思是通过一个示例来说明:

pigc=# SELECT date FROM msr_history WHERE pos = 'DV' AND msr_id = 177;
            date            
----------------------------
 2018-06-20 08:04:09.724103
 2018-06-20 08:09:49.484921
(2 rows)

我的示例的第一行是我的 sql 请求,我试图只获取最后一个日期,在这个示例中它将是这个:2018-06-20 08:09:49.484921 请注意,日期数可能不同,因此我不能每次都手动选择第二个日期。感谢您的帮助。

【问题讨论】:

  • max(date) 有什么问题吗?
  • 没想到这么简单……哈哈 非常感谢,我不知道max()的存在。如果您希望我接受您的回答,如果您对此做出回答,我会很乐意这样做:-)

标签: sql psql


【解决方案1】:

使用select max(column)where 子句中包含的所有行检索该特定数据类型的最大值。

在这种情况下,不需要聚合,因为没有检索到非聚合列。

有关聚合函数的完整列表,特别是 https://www.postgresqltutorial.com/postgresql-max-function,请参阅 https://www.postgresql.org/docs/9.5/functions-aggregate

【讨论】:

  • 感谢您的帮助!这在我的情况下非常有效
【解决方案2】:

实现它的最快方法是在查询中使用 LIMIT 子句。这将阻止在您的查询中使用聚合函数并且运行速度最快 -

SELECT date
  FROM msr_history
 WHERE pos = 'DV'
   AND msr_id = 177
 ORDER BY date DESC
 LIMIT 1;

【讨论】:

  • 它实际上更有可能是相反的,具有 sutable 索引性能将是可比的,否则限制 1 与 order by 将由于排序而表现更差。
猜你喜欢
  • 2023-02-03
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多