postgreSQL 选择多个记录,每次迭代都有限制



>我有时间戳数组[1544539216000, 1544604587000];我的目标是编写一个SQL查询,为每个时间戳返回单个记录,该时间戳更少,更接近当前时间戳。(不确定如何涵盖诸如如果第二条记录之间没有记录之类的情况,则返回与第一条记录相同的行..?DB:邮政。这怎么可能。

编辑

换句话说 - "嘿 SQL 获取这些时间戳,并且每个时间戳都返回我一个时间戳更少、更近的记录"。输出计数必须等于输入计数。

到目前为止,我的代码是:

SELECT * 
FROM public."myDate"
WHERE "createdAt" <= '1544539216000' AND "createdAt" <= '1544604587000'
ORDER BY id ASC 

plpsql 解决方案可以吗?

CREATE FUNCTION select_by_dates(double precision[])
RETURNS SETOF public."myDate"
AS $$
DECLARE
cur_ts double precision;
out record;
BEGIN
FOREACH cur_ts IN ARRAY $1
LOOP
Select * FROM public."myDate" WHERE "createdAt" < cur_ts ORDER  BY "createdAt" DESC LIMIT 1 INTO out;
RETURN NEXT out;
END LOOP;
RETURN;
END;
$$Language plpgsql;

select * from select_by_dates(ARRAY[1544539216000, 1544604587000]);

最新更新