首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Postgres中为每个用户选择每N行

在Postgres中为每个用户选择每N行
EN

Stack Overflow用户
提问于 2011-09-23 01:14:23
回答 2查看 4.3K关注 0票数 2

我使用的是以下SQL语句:

代码语言:javascript
复制
SELECT "dateId", "userId", "Salary" 
FROM (
   SELECT *, 
          (row_number() OVER (ORDER BY "userId", "dateId"))%2 AS rn 
   FROM user_table
 ) sa 
 WHERE sa.rn=1 
   AND "userId" = 789 
   AND "Salary" > 0;

但是,每次表获得新行时,查询的结果都不同。

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2011-09-23 05:17:53

不,看起来还可以。您有新行,这些行会在排序后将旧行更改为显示在不同位置。

票数 0
EN

Stack Overflow用户

发布于 2011-09-23 05:25:09

如果有人插入userId低于789的新行,顺序将会改变。例如,如果您有:

代码语言:javascript
复制
userId rn
 1      1
 4      0
 5      1
 6      0

当你插入一行userId = 2时,rn将会改变:

代码语言:javascript
复制
userId rn
 1      1
 2      0
 4      1
 5      0
 6      1

为了每隔N行选择一次,您需要一个带有序列或时间戳的列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7518788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档