PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Requête SQL pour la pagination avec plusieurs colonnes ; comprendre l'opérateur OU

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.