PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Funkcja differ() (nie wybierz kwalifikatora) w postgres

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:

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamykanie połączenia z bazą danych w Laravel 5.1

  2. Przechowywanie zdarzeń podczas korzystania z Event Sourcing

  3. Postgres LIKE '...%' nie używa indeksu

  4. Po przywróceniu PostgreSQL otrzymuję odmowę uprawnień dla relacji django_session

  5. Wyciszanie postgresu loguje spam w railach 3 logi