PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Consulta SQL para paginação com várias colunas; entenda o operador OR


A finalidade do OR -- como você suspeita -- é lidar com o caso em que há empates nas pontuações. A ideia é fazer uma classificação estável incluindo o id , então isso está recebendo tudo depois (score, id) .

Presumivelmente, os valores usados ​​para score e id são os últimos valores vistos (provavelmente na página anterior, mas isso é especulação).

Uma classificação "estável" é aquela que retorna as linhas na mesma ordem sempre que é aplicada. Como as tabelas SQL representam não ordenadas sets, empates implicam em um instável ordenar. Incluindo o id torna estável (assumindo que id é único.

O Postgres na verdade suporta uma sintaxe mais simples:
where (score, id) > (11266, 4482)

Observe que também removi as aspas simples. Os valores parecem números, portanto, devem ser tratados como números e não como strings.