Eigenlijk is de gewone DISTINCT-kwalificatie op een SELECT -- maar met een misleidende syntaxis (je hebt gelijk op dat punt).
DISTINCT is nooit een functie, altijd een trefwoord. Hier wordt het (verkeerd) gebruikt alsof het een functie is, maar
select distinct(pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
is in feite gelijk aan alle volgende vormen:
-- voeg een spatie toe na distinct
:
select distinct (pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
-- verwijder haakjes rond de kolomnaam:
select distinct
pattern as pattern, style, ... etc ...
from
styleview
where
... etc ...
-- inhoud inspringende clausules:
select distinct
pattern as pattern, style, ... etc ...
from
styleview
where
... etc ...
-- verwijder overtollige alias identiek aan kolomnaam:
select distinct
pattern, style, ... etc ...
from
styleview
where
... etc ...
Aanvullende lectuur:
- http:// weblogs.sqlteam.com/jeffs/archive/2007/10/12/sql-distinct-group-by.aspx
- https://stackoverflow.com/a/1164529
Opmerking:OMG-pony's in een antwoord op de huidige vraag
noemde de DISTINCT ON
extensie aanbevolen door PostgreSQL.
Maar (zoals Jay terecht opmerkte in een opmerking) is het niet wat hier wordt gebruikt, omdat de zoekopdracht (en de resultaten) anders zou zijn geweest, bijvoorbeeld:
select distinct on(pattern) pattern, style, ... etc ...
from styleview
where ... etc ...
order by pattern, ... etc ...
gelijk aan:
select distinct on (pattern)
pattern, style, ... etc ...
from
styleview
where
... etc ...
order by
pattern, ... etc ...
Aanvullende lectuur:
Opmerking:Lukas Eder in een antwoord op de huidige vraag
noemde de syntaxis van het gebruik van het sleutelwoord DISTINCT in een aggregatiefunctie:
de COUNT(DISTINCT (foo, bar, ...))
syntaxis van HSQLDB
(of COUNT(DISTINCT foo, bar, ...)
wat ook werkt voor MySQL, maar ook voor PostgreSQL, SQL Server, Oracle en misschien anderen).
Maar (duidelijk genoeg) het is niet wat hier wordt gebruikt.