отличный () функция (не выбирают спецификатор) в пост-ГРЭС

Я просто столкнулся с SQL-запросом, конкретно против базы данных Postgres, которая использует функцию, названную "отличной". А именно:

select distinct(pattern) as pattern, style, ... etc ...
from styleview
where ... etc ...

Обратите внимание, что это не обычный ОТЛИЧНЫЙ спецификатор на ВЫБОРЕ - по крайней мере, это не нормальный синтаксис для ОТЛИЧНОГО спецификатора, отметьте круглые скобки. Это, по-видимому, использует ОТЛИЧНЫЙ в качестве функции, или возможно это - некоторый специальный синтаксис.

Какая-либо идея, что это означает?

Я пытался играть с ним немного и если я пишу

select distinct(foo)
from bar

Я получаю те же результаты как

select distinct foo
from bar

Когда я комбинирую его с другими полями в том же выборе, мне точно не ясно, что это делает.

Я ничего не могу найти в документации Пост-ГРЭС.

Спасибо за любую справку!

7
задан OMG Ponies 4 August 2010 в 17:31
поделиться

1 ответ

Из документация :

Если задано DISTINCT , все повторяющиеся строки удаляются из набора результатов (одна строка сохраняется из каждой группы дубликатов) . ALL указывает обратное: все строки сохраняются; это значение по умолчанию.

DISTINCT ON (выражение [, ...]) сохраняет только первую строку каждого набора строк, в которых данные выражения оцениваются как равные. Выражения DISTINCT ON интерпретируются с использованием тех же правил, что и для ORDER BY (см. Выше). Обратите внимание, что «первая строка» каждого набора непредсказуема, если только ORDER BY не используется, чтобы гарантировать, что нужная строка появится первой. Например,

Часть ON является необязательной, поэтому на самом деле она сводится к:

  1. Используемые скобки
  2. Размещение в запросе - SQL Server и MySQL выдают ошибку, если вы используете DISTINCT в любой позиции предложения SELECT, кроме первой

PostgreSQL, насколько мне известно, единственная база данных, поддерживающая этот синтаксис.

3
ответ дан 6 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: