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

Postgres - Hvordan konverterer man række med et int-område til mellemliggende rækker fra individuelle værdier fra det område?

Brug generate_series() :

select gs.i, t.*
from t cross join lateral
     generate_series(start_i, end_i, 1) gs(i);

Strengt taget den lateral er ikke nødvendig. Men det forklarer, hvad der foregår. Jeg skal også bemærke, at du også kan:

select generate_series(start_i, end_i) as i, t.*
from t;

Dog generate_series() påvirker antallet af rækker i forespørgslen. Jeg er utilpas ved at have sådanne effekter i SELECT klausul.




  1. Indsæt i databaseproblem... (Dårlig tegnkodning) PHP/MYSQL

  2. Sender flere værdier i en enkelt parameter

  3. Laravel:et til et forhold bliver et til mange forhold

  4. MySQL Error 1170 (42000):BLOB/TEXT-kolonne brugt i nøglespecifikation uden en nøglelængde