大佬教程收集整理的这篇文章主要介绍了postgresql:如何在where子句中使用变量(行的某个列值),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含 ID
、time
、value
列的表格
STEP1:获取最近一行的时间值
即SELECT time FROM tablename ORDER BY ID desc liMIT 1
STEP2:获取此时间后最后 5 分钟内的所有行。
我该怎么做
一种方法是子查询:
select t.*
FROM tablename t
WHERE t.time > (SELECT t2.time - INTERVAL '5 minute'
FROM tablename t2
ORDER BY id desc
LIMIT 1
);
如果这确实不是最近的时间并且您希望在五分钟内获得任何结果,那么将计算移至 FROM
子句会更简单:
select t.*
FROM tablename t CROSS JOIN
(SELECT t2.time - INTERVAL '5 minute'
FROM tablename t2
ORDER BY id desc
LIMIT 1
) last_row
WHERE t.time > last_row.time - INTERVAL '5 minute' AND
t.time <= last_row.time;
如果您想要最近的时间以及五分钟内的任何内容,您也可以使用窗口函数:
select t.*
FROM (select t.*,MAX(t.timE) OVER () as max_time
FROM t
) t
WHERE t.time > max_time - INTERVAL '5 minute';
以上是大佬教程为你收集整理的postgresql:如何在where子句中使用变量(行的某个列值)全部内容,希望文章能够帮你解决postgresql:如何在where子句中使用变量(行的某个列值)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。