sql >> Databasteknik >  >> RDS >> PostgreSQL

Välj tills rad matchar i postgresql?

Det du vill ha är ett slags stopptillstånd. Så vitt jag vet finns det inget sådant i SQL, åtminstone PostgreSQL:s dialekt.

Vad du kan göra är att använda en PL/PgSQL-procedur för att läsa rader från en markör och returnera dem tills stoppvillkoret är uppfyllt. Det kommer inte gå supersnabbt, men det ordnar sig. Det är bara en FOR loop över en fråga med ett IF expression THEN exit; ELSE return next; END IF; . Ingen explicit markör krävs eftersom PL/PgSQL kommer att använda en internt om du FOR loop över en fråga.

Ett annat alternativ är att skapa en markör och läsa bitar av rader från den i applikationen och sedan kassera en del av den sista biten när stoppvillkoret är uppfyllt.

Hur som helst, en markör kommer att vara vad du vill ha.

Ett stopputtryck skulle förresten inte vara så svårt att implementera i PostgreSQL. Du skulle behöva implementera en ny typ av executor nod, men det nya CustomScan-stödet skulle göra det praktiskt att göra i en tillägg. Sedan skulle du bara utvärdera ett uttryck för att bestämma om du ska fortsätta att hämta rader eller inte.



  1. Hur man använder index efficienty i mysql-fråga

  2. Om två samma fält finns infoga annan uppdatering

  3. Oracle - Ändra en befintlig tabell för att automatiskt öka en kolumn

  4. Måste släppa en databas inte göras i någon transaktion?