Właściwie to jest zwykły kwalifikator DISTINCT na SELECT - ale z mylącą składnią (masz rację).
DISTINCT nigdy nie jest funkcją, zawsze jest słowem kluczowym. Tutaj jest używany (błędnie) tak, jakby był funkcją, ale
select distinct(pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
jest w rzeczywistości równoważny ze wszystkimi następującymi formami:
-- dodaj spację po distinct
:
select distinct (pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
-- usuń nawiasy wokół nazwy kolumny:
select distinct pattern as pattern, style, ... etc ...
from styleview
where ... etc ...
-- zawartość klauzul wcięcia:
select distinct
pattern as pattern, style, ... etc ...
from
styleview
where
... etc ...
-- usuń nadmiarowy alias identyczny z nazwą kolumny:
select distinct
pattern, style, ... etc ...
from
styleview
where
... etc ...
Lektura uzupełniająca:
- http:// weblogs.sqlteam.com/jeffs/archive/2007/10/12/sql-distinct-group-by.aspx
- https://stackoverflow.com/a/1164529
Uwaga:Kucyki OMG w odpowiedzi na obecne pytanie
wspomniał o DISTINCT ON
rozszerzenie oferowane przez PostgreSQL.
Ale (jak słusznie zauważył Jay w komentarzu) nie jest ono tutaj użyte, ponieważ zapytanie (i wyniki) byłyby inne, np.:
select distinct on (pattern)
pattern, style, ... etc ...
from
styleview
where
... etc ...
order by
pattern, ... etc ...
odpowiednik:
select distinct on (pattern)
pattern, style, ... etc ...
from
styleview
where
... etc ...
order by
pattern, ... etc ...
Lektura uzupełniająca:
Uwaga:Lukas Eder w odpowiedzi na obecne pytanie
wspomniał o składni użycia słowa kluczowego DISTINCT wewnątrz funkcji agregującej:COUNT(DISTINCT (foo, bar, ...))
składnia wykorzystywana przez HSQLDB
(lub COUNT(DISTINCT foo, bar, ...)
który działa również dla MySQL, ale także dla PostgreSQL, SQL Server, Oracle i być może innych).
Ale (wyraźnie) nie jest to tutaj używane.