OFFSET 和 LIMIT 在 POSTGRES 中不起作用
OFFSET and LIMIT are not working MAX in POSTGRES
PGADMIN 中的 Follow 查询 没有给我任何信息,
SELECT MAX(time) AS MaxID
FROM table_name
where column_name like 'valu_name'
OFFSET 1000 Limit 1000
好像我 运行 下面的查询它 给我输出
SELECT MAX(time) AS MaxID
FROM table_name
where column_name like 'valu_name'
但是为什么呢?为什么 MAX
函数不适用于 OFFSET
和 LIMIT
?
正确的做法是什么?
用例是获取 2000 到 3000 之间行的最大时间戳,这就是为什么我使用 OFFSET 和 LIMIT,从到到行可能会改变!!
OFFSET
和 LIMIT
是在您获得 MAX(time)
的结果后应用的,它只有 1 行。
如果你想获得最大 time
的 1000 行,从你的 table 中任意返回,因为没有 ORDER BY
子句,你应该使用一个子查询 returns 这些行然后聚合:
SELECT MAX(time) AS MaxID
FROM (
SELECT time
FROM table_name
WHERE column_name like 'valu_name'
OFFSET 1000 Limit 1000
) t
PGADMIN 中的 Follow 查询 没有给我任何信息,
SELECT MAX(time) AS MaxID
FROM table_name
where column_name like 'valu_name'
OFFSET 1000 Limit 1000
好像我 运行 下面的查询它 给我输出
SELECT MAX(time) AS MaxID
FROM table_name
where column_name like 'valu_name'
但是为什么呢?为什么 MAX
函数不适用于 OFFSET
和 LIMIT
?
正确的做法是什么?
用例是获取 2000 到 3000 之间行的最大时间戳,这就是为什么我使用 OFFSET 和 LIMIT,从到到行可能会改变!!
OFFSET
和 LIMIT
是在您获得 MAX(time)
的结果后应用的,它只有 1 行。
如果你想获得最大 time
的 1000 行,从你的 table 中任意返回,因为没有 ORDER BY
子句,你应该使用一个子查询 returns 这些行然后聚合:
SELECT MAX(time) AS MaxID
FROM (
SELECT time
FROM table_name
WHERE column_name like 'valu_name'
OFFSET 1000 Limit 1000
) t