sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL-syntaksudtryk for 'WHERE (col1, col2) <(val1, val2)'

Den almindelige kortsigtede er blot "Rækkeværdier" . Eller "Sammenligning af rækkeværdier" for den operation, du demonstrerer. Den funktion har været i SQL-standarden siden SQL-92 (!). Postgres er i øjeblikket det eneste større RDBMS, der understøtter det i alle aspekter - især også med optimal indeksunderstøttelse.

Især udtrykket (col1, col2) < (1, 2) er kun en forkortelse for ROW(col1, col2) < ROW(1, 2) i Postgres.Udtrykket ROW(col1, col2) kaldes også rækkekonstruktør - ligesom ARRAY[col1, col2] er en array-konstruktør.

Det er bekvemt kort for det mere verbose, ækvivalente udtryk:

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

... og Postgres kan bruge et indeks på (col1, col2) eller (col1 DESC, col2 DESC) for dette.

Og især adskilt fra (!)

col1 < 1 AND  AND col2 < 2

Overvej eksempel:(1,1) ...

Her er en præsentation af Markus Winand, der diskuterer funktionen til paginering i detaljer:

"Søgning udført på PostgreSQL-måden" på use-the-index-luke.com.

Sammenligning af rækkeværdier starter på side 20. Den støttematrix, jeg har henvist til, er på side 45.

Jeg er på ingen måde tilknyttet nogen af ​​de kilder, jeg citerede.



  1. Gem forespørgselsresultat i en variabel, der bruger i PL/pgSQL

  2. SQL Server Collection Inventory Script -3

  3. Video:Oracle 12c IDENTITY Column Performance på RAC

  4. Sådan overføres boolesk parameter til Oracle-procedure C#