Wat doet deze query precies? (distinct generate_series) -postgresql

Status
Niet open voor verdere reacties.

stevebravo

Gebruiker
Lid geworden
16 jan 2010
Berichten
156
Ik heb een query waarvan ik totaal niet begrijp wat deze precies doet.
De query is als volgt:
[SQL]SELECT DISTINCT
generate_series(0,8)[/SQL]


vervolgens krijg ik dit resultaat:
16
24
35
48
51
62
70
83
97


Wat is de logica van de volgorde? Kwartje valt nog niet!
 
Laatst bewerkt:
Het hoort gewoon 0-8 te geven in die volgorde. werkt het wel goed zonder distinct? Is dit echt de hele query?
 
Het hoort gewoon 0-8 te geven in die volgorde

Dat is onjuist.
Een DISTINCT geeft slechts de resultaten weer.
Als je de resultaten oplopend weer wilt geven dan zul je dat af moeten dwingen door een ORDER BY te gebruiken.

Tardis
 
Iets wat echter normaal gegarandeerd wordt door de functie generate_series. Een functie die in postgres gebruikt wordt om onder ander matrices is volgorde te doorlopen (zoals een FOR statement). Dus intern is de volgorde gegarandeerd.

Ik weet echter niet 100% of dat voor de output hoort te gelden, maar er is in principe geen geldige reden (iig zonder distinct) waarom je niet gewoon de juiste volgorde krijgt. Het is namelijk de volgorde van de records zoals ze gegenereerd worden. Daarom vroeg ik ook of een gewone select wel een "normale" volgorde produceert.

*edit* Ik zie net in de documentatie dat de uitkomst van een select zonder "order by" afhankelijk is van je configuratie, maar ik kan zelf iig consistent de verwachte volgorde genereren
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan