Cel OR
- jak podejrzewasz - jest zajęciem się przypadkiem, w którym są remisy w wynikach. Pomysł polega na utworzeniu stabilnego sortowania poprzez uwzględnienie id
, więc to otrzymanie wszystkiego po (score, id)
.
Przypuszczalnie wartości użyte do score
i id
są ostatnimi widzianymi wartościami (prawdopodobnie na poprzedniej stronie, ale to spekulacje).
Sortowanie „stabilne” to takie, które zwraca wiersze w tej samej kolejności za każdym razem, gdy jest stosowane. Ponieważ tabele SQL reprezentują nieuporządkowane zestawy, powiązania oznaczają niestabilność sortować. W tym id
czyni ją stabilną (zakładając, że id
jest wyjątkowy.
Postgres faktycznie obsługuje prostszą składnię:
where (score, id) > (11266, 4482)
Zauważ, że usunąłem również pojedyncze cytaty. Wartości wyglądają jak liczby, więc powinny być traktowane jako liczby, a nie ciągi.