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

Terme de syntaxe SQL pour 'WHERE (col1, col2) <(val1, val2)'

Le court terme courant est simplement "Valeurs de ligne" . Ou "Comparaison des valeurs de ligne" pour l'opération que vous démontrez. Cette fonctionnalité fait partie du standard SQL depuis SQL-92 (!). Postgres est actuellement le seul SGBDR majeur qui le prend en charge dans tous les aspects - en particulier également avec une prise en charge optimale des index.

En particulier, l'expression (col1, col2) < (1, 2) est juste un raccourci pour ROW(col1, col2) < ROW(1, 2) dans Postgres. L'expression ROW(col1, col2) est également appelé constructeur de ligne - tout comme ARRAY[col1, col2] est un constructeur de tableau.

Il est commodément court pour l'expression équivalente plus verbeuse :

col1 < 1 OR (col1 = 1 AND col2 < 2)

... et Postgres peut utiliser un index sur (col1, col2) ou (col1 DESC, col2 DESC) pour cela.

Et notablement distinct de (!)

col1 < 1 AND  AND col2 < 2

Prenons l'exemple :(1,1) ...

Voici une présentation de Markus Winand qui traite en détail de la fonctionnalité de pagination :

"Pagination faite à la manière PostgreSQL" sur use-the-index-luke.com.

La comparaison des valeurs de ligne commence à la page 20. La matrice de support à laquelle je faisais référence se trouve à la page 45.

Je ne suis en aucun cas affilié à l'une des sources que j'ai citées.