Faktisk er dette den almindelige DISTINCT-kvalifikation på en SELECT -- men med en vildledende syntaks (du har ret i det punkt).
DISTINCT er aldrig en funktion, altid et nøgleord. Her bruges det (forkert) som om det var en funktion, men
select distinct(pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
svarer faktisk til alle følgende former:
-- tilføj et mellemrum efter distinct
:
select distinct (pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
-- fjern parenteser omkring kolonnenavn:
select distinct
pattern as pattern, style, ... etc ...
from
styleview
where
... etc ...
-- indhold af indrykningssætninger:
select distinct
pattern as pattern, style, ... etc ...
from
styleview
where
... etc ...
-- fjern redundant alias, der er identisk med kolonnenavn:
select distinct
pattern, style, ... etc ...
from
styleview
where
... etc ...
Supplerende læsning:
- http:// weblogs.sqlteam.com/jeffs/archive/2007/10/12/sql-distinct-group-by.aspx
- https://stackoverflow.com/a/1164529
Bemærk:OMG Ponyer i et svar på nuværende spørgsmål
nævnte DISTINCT ON
udvidelse fremhævet af PostgreSQL.
Men (som Jay rigtigt bemærkede i en kommentar) er det ikke det, der bruges her, fordi forespørgslen (og resultaterne) ville have været anderledes, f.eks.:
select distinct on(pattern) pattern, style, ... etc ...
from styleview
where ... etc ...
order by pattern, ... etc ...
svarende til:
select distinct on (pattern)
pattern, style, ... etc ...
from
styleview
where
... etc ...
order by
pattern, ... etc ...
Supplerende læsning:
Bemærk:Lukas Eder i et svar på nuværende spørgsmål
nævnte syntaksen ved at bruge DISTINCT nøgleordet i en aggregeret funktion:COUNT(DISTINCT (foo, bar, ...))
syntaks med HSQLDB
(eller COUNT(DISTINCT foo, bar, ...)
som også virker til MySQL, men også til PostgreSQL, SQL Server, Oracle og måske andre).
Men (det er klart nok) ikke det, der bruges her.