PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL-Abfrage für Paginierung mit mehreren Spalten; OR-Operator verstehen

Der Zweck des OR -- wie Sie vermuten -- soll den Fall handhaben, in dem es Unentschieden in den Punktzahlen gibt. Die Idee ist, eine stabile Sortierung durch Einschließen der id zu machen , also das hier bekommt alles nach (score, id) .

Vermutlich die für score verwendeten Werte und id sind die zuletzt gesehenen Werte (wahrscheinlich auf der vorherigen Seite, aber das ist Spekulation).

Eine "stabile" Sortierung ist eine, die die Zeilen bei jeder Anwendung in derselben Reihenfolge zurückgibt. Weil SQL-Tabellen ungeordnet darstellen Sätze, Bindungen implizieren ein instabiles Sortieren. Einschließlich der id macht es stabil (vorausgesetzt, dass id ist einzigartig.

Postgres unterstützt tatsächlich eine einfachere Syntax:

where (score, id) > (11266, 4482)

Beachten Sie, dass ich auch die einfachen Anführungszeichen entfernt habe. Die Werte sehen aus wie Zahlen, also sollten sie als Zahlen und nicht als Zeichenketten behandelt werden.