【发布时间】:2011-11-23 01:03:47
【问题描述】:
我正在使用这个 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;
但每次表获取新行时,查询的结果都是不同的。
我错过了什么吗?
【问题讨论】:
-
您需要告诉我们您想要做什么以及“新行”是什么样的,尤其是您在窗口函数中用于 ORDER BY 的“userId”和“dateId”。
-
我想优化此查询以在每次更新表时给我相同的结果。 dateId - 只是日期的十进制表示
-
Changed "dateId" 改变了窗口函数中的排序顺序。因此,结果会发生变化。
-
如何避免这种情况?我在想在表格底部添加“dateId”不应该影响排序顺序......
标签: sql postgresql select window-functions row-number