我正在使用一个工具,该工具在下面生成Postgresql查询:
SELECT
"id",
"score"
FROM
"players"
WHERE
"score" > '11266' OR ( "score" = '11266' AND "id" > '4482' )
ORDER BY
"score" ASC,
"id" ASC
LIMIT 3
我需要了解为什么OR
运算符?
我的玩家表可以包含具有相同score
但不相同id
的许多行。
[当多行具有相同的OR
值时是否需要score
?
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY OrderDate ) AS RowNum, *
FROM Orders
WHERE OrderDate >= '1980-01-01'
) AS RowConstrainedResult
WHERE RowNum >= 1
AND RowNum < 20
ORDER BY RowNum
OR
的目的-如您所怀疑-是要处理分数中有联系的情况。这个想法是要进行稳定的排序,因此这可以使所有内容after (score, id)
。
Postgres实际上支持简单语法:
where (score, id) > (11266, 4482)
注意,我也删除了单引号。这些值看起来像数字,因此应将它们视为数字而不是字符串。