Le but du OR
- comme vous le soupçonnez - est de gérer le cas où il y a des égalités dans les scores. L'idée est de faire un tri stable en incluant le id
, donc tout est obtenu après (score, id)
.
Vraisemblablement, les valeurs utilisées pour score
et id
sont les dernières valeurs vues (probablement sur la page précédente, mais c'est de la spéculation).
Un tri "stable" est un tri qui renvoie les lignes dans le même ordre à chaque fois qu'il est appliqué. Parce que les tables SQL représentent non ordonnées ensembles, les égalités impliquent un instable trier. Y compris l'id
le rend stable (en supposant que id
est unique.
Postgres supporte en fait une syntaxe simplifiée :
where (score, id) > (11266, 4482)
Notez que j'ai également supprimé les guillemets simples. Les valeurs ressemblent à des nombres, elles doivent donc être traitées comme des nombres et non comme des chaînes.