PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

функция distinct() (без квалификатор за избор) в postgres

Всъщност това е обикновеният квалификатор 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 ...

Допълнително четене:

Забележка: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 и може би други).
Но (достатъчно ясно) това не е това, което се използва тук.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете частично/напълно припокриващи се събития с начални и крайни времеви клейма от изхода на заявката?

  2. Умножаване на две колони, които са били изчислени на оператор CASE

  3. Кое е по-добре - хвърляне на изключение или проверка за грешки предварително

  4. Как да вмъкнете списък на Python в таблицата на Postgres

  5. Промяна на езика на системата и съобщенията за грешки в PostgreSQL