2014-04-29 12 views

Odpowiedz

16

Można przejechać dołączyć go do serii 3:

SELECT a.n 
from generate_series(1, 100) as a(n), generate_series(1, 3) 
8

można spróbować całkowitą devision tak:

SELECT generate_series(3, 100)/3 
+0

świetnie! bardziej przydatny w porównaniu do wybranej odpowiedzi. – uniquegino

2

Nie wiem, czy można używać generate_series takiego w PostgreSQL, ale chciałbym spróbować krzyż dołączyć:

SELECT x FROM 
    (SELECT generate_series(1, 10) AS x) t1, 
    (SELECT generate_series(1, 3) as y) t2 

Edit:

Jak generate_series już zwraca tabelę nie ma potrzeby SELECT w pochodnej tabeli:

SELECT x FROM 
    generate_series(1, 10) AS x, 
    generate_series(1, 3) as y 
+0

Działa na 9.3 – frlan

+0

To powinno zadziałać. – dnoeth

5

Dla tak małych numerów CROSS JOIN dwa wyrażenia VALUES:

SELECT n 
FROM (VALUES (1),(2),(3)) x(r) -- repetitions (values are not used) 
    ,(VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) y(n); -- numbers 

SQL Fiddle.

Działa to dla żadnego ciąg liczb (w tym wielokrotnych lub nieregularnych wzorów).
Aby uzyskać wszystko, co jest większe i ze zwykłym wzorcem sekwencyjnym, należy sugerować użycie generate_series().

1
SELECT a.x from generate_series(0, 100) as a(x), generate_series(1, 3) 
2

Just Another opcje:

select generate_series(1, 3) from generate_series(1, 10) 

select generate_series(1, 30) % 10 + 1 
Powiązane problemy