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

Termo de sintaxe SQL para 'WHERE (col1, col2) <(val1, val2)'


O curto prazo comum é apenas "Valores de linha" . Ou "Comparação de valor de linha" para a operação que você demonstra. Esse recurso está no padrão SQL desde o SQL-92 (!). O Postgres é atualmente o único grande RDBMS que o suporta em todos os aspectos - especialmente também com suporte de índice ideal.

Em particular, a expressão (col1, col2) < (1, 2) é apenas um atalho para ROW(col1, col2) < ROW(1, 2) no Postgres. A expressão ROW(col1, col2) também é chamado de construtor de linha - assim como ARRAY[col1, col2] é um construtor de matriz.

É convenientemente curto para a expressão mais detalhada e equivalente:
col1 < 1 OR (col1 = 1 AND col2 < 2)

... e o Postgres pode usar um índice em (col1, col2) ou (col1 DESC, col2 DESC) por esta.

E notavelmente distinto de (!)
col1 < 1 AND  AND col2 < 2

Considere o exemplo:(1,1) ...

Aqui está uma apresentação de Markus Winand que discute o recurso de paginação em detalhes:

"Paginação feita à maneira do PostgreSQL" em use-the-index-luke.com.

A comparação de valores de linha começa na página 20. A matriz de suporte a que me referi está na página 45.

Não sou afiliado a nenhuma das fontes que citei.