我使用的是以下SQL语句:
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;但是,每次表获得新行时,查询的结果都不同。
我是不是遗漏了什么?
发布于 2011-09-23 05:17:53
不,看起来还可以。您有新行,这些行会在排序后将旧行更改为显示在不同位置。
发布于 2011-09-23 05:25:09
如果有人插入userId低于789的新行,顺序将会改变。例如,如果您有:
userId rn
1 1
4 0
5 1
6 0当你插入一行userId = 2时,rn将会改变:
userId rn
1 1
2 0
4 1
5 0
6 1为了每隔N行选择一次,您需要一个带有序列或时间戳的列。
https://stackoverflow.com/questions/7518788
复制相似问题