在 sql 请求中获取某个项目的最后一次出现
getting the last occurence of a certain item in a sql request
我正在尝试向我的数据库写入 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
请注意,日期的数量可能不同,所以我不能每次都手动 select 第二个日期。谢谢你的帮助。
使用 select max(column)
检索 where
子句中包含的所有行的特定数据类型的最大值。
在这种情况下,不需要聚合,因为没有检索到非聚合列。
见https://www.postgresql.org/docs/9.5/functions-aggregate for a complete list of aggregate functions and specifically https://www.postgresqltutorial.com/postgresql-max-function
最快的实现方式是在查询中使用 LIMIT 子句。这将阻止在您的查询中使用聚合函数,并将 运行 最快 -
SELECT date
FROM msr_history
WHERE pos = 'DV'
AND msr_id = 177
ORDER BY date DESC
LIMIT 1;
我正在尝试向我的数据库写入 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
请注意,日期的数量可能不同,所以我不能每次都手动 select 第二个日期。谢谢你的帮助。
使用 select max(column)
检索 where
子句中包含的所有行的特定数据类型的最大值。
在这种情况下,不需要聚合,因为没有检索到非聚合列。
见https://www.postgresql.org/docs/9.5/functions-aggregate for a complete list of aggregate functions and specifically https://www.postgresqltutorial.com/postgresql-max-function
最快的实现方式是在查询中使用 LIMIT 子句。这将阻止在您的查询中使用聚合函数,并将 运行 最快 -
SELECT date
FROM msr_history
WHERE pos = 'DV'
AND msr_id = 177
ORDER BY date DESC
LIMIT 1;