Fre*_*ors 2 sql database sorting postgresql
我正在使用生成以下 Postgresql 查询的工具:
SELECT
"id",
"score"
FROM
"players"
WHERE
"score" > '11266' OR ( "score" = '11266' AND "id" > '4482' )
ORDER BY
"score" ASC,
"id" ASC
LIMIT 3
Run Code Online (Sandbox Code Playgroud)
我需要了解为什么OR运营商?
我的玩家表可以有很多行相同score但不相同id。
OR当多行具有相同的score值时是否需要这样做?
OR正如您所怀疑的那样,目的是处理分数存在联系的情况。这个想法是通过包含 来进行稳定的排序id,因此这将在 (score, id).
据推测,用于score和的值id是最后看到的值(可能在上一页,但这是推测)。
“稳定”排序是每次应用时以相同顺序返回行的排序。因为 SQL 表代表无序集合,关系意味着一种不稳定的排序。包括id使其稳定(假设这id是唯一的。
Postgres 实际上支持更简单的语法:
where (score, id) > (11266, 4482)
Run Code Online (Sandbox Code Playgroud)
请注意,我还删除了单引号。这些值看起来像数字,所以它们应该被视为数字而不是字符串。
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |