Всъщност това е обикновеният квалификатор DISTINCT на SELECT -- но с подвеждащ синтаксис (прав сте за това).
DISTINCT никога не е функция, винаги ключова дума. Тук се използва (погрешно), сякаш е функция, но
select distinct(pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
всъщност е еквивалентен на всички следните форми:
- добавете интервал след distinct
:
select distinct (pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...
- премахнете скобите около името на колоната:
select distinct
pattern as pattern, style, ... etc ...
from
styleview
where
... etc ...
- отстъп на съдържанието на клаузите:
select distinct
pattern as pattern, style, ... etc ...
from
styleview
where
... etc ...
- премахване на излишния псевдоним, идентичен с името на колоната:
select distinct
pattern, style, ... etc ...
from
styleview
where
... etc ...
Допълнително четене:
- http:// weblogs.sqlteam.com/jeffs/archive/2007/10/12/sql-distinct-group-by.aspx
- https://stackoverflow.com/a/1164529
Забележка:OMG Ponies в отговор на настоящ въпрос
спомена DISTINCT ON
разширение, представено от PostgreSQL.
Но (както Джей правилно отбеляза в коментар) това не е това, което се използва тук, защото заявката (и резултатите) биха били различни, напр.:
select distinct on(pattern) pattern, style, ... etc ...
from styleview
where ... etc ...
order by pattern, ... etc ...
еквивалентно на:
select distinct on (pattern)
pattern, style, ... etc ...
from
styleview
where
... etc ...
order by
pattern, ... etc ...
Допълнително четене:
Забележка:Лукас Едер в отговор на настоящ въпрос
спомена синтаксиса на използването на ключовата дума DISTINCT в агрегатна функция:
the COUNT(DISTINCT (foo, bar, ...))
синтаксис, представен от HSQLDB
(или COUNT(DISTINCT foo, bar, ...)
което работи и за MySQL, но също и за PostgreSQL, SQL Server, Oracle и може би други).
Но (достатъчно ясно) това не е това, което се използва тук.