sql >> Databasteknik >  >> RDS >> PostgreSQL

distinct() funktion (inte välj kvalificerare) i postgres

Det här är faktiskt det vanliga DISTINCT-kvalet på en SELECT -- men med en missvisande syntax (du har rätt i den punkten).

DISTINCT är aldrig en funktion, alltid ett nyckelord. Här används det (felaktigt) som om det vore en funktion, men

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

motsvarar i själva verket alla följande former:

-- lägg till ett mellanslag efter distinct :

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

-- ta bort parenteser runt kolumnnamn:

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

-- indragssatser innehåll:

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

-- ta bort redundant alias som är identiskt med kolumnnamnet:

select distinct
    pattern, style, ... etc ...
from
    styleview
where
    ... etc ...

Kompletterande läsning:

Obs! OMG-ponnyer i ett svar på aktuell fråga nämnde DISTINCT ON tillägg med PostgreSQL.
Men (som Jay med rätta påpekade i en kommentar) är det inte det som används här, eftersom frågan (och resultaten) skulle ha varit annorlunda, t.ex.:

select  distinct on (pattern)
    pattern, style, ... etc ...
from
    styleview
where
    ... etc ...
order by
    pattern, ... etc ...

motsvarande:

select  distinct on (pattern)
    pattern, style, ... etc ...
from
    styleview
where
    ... etc ...
order by
    pattern, ... etc ...

Kompletterande läsning:

Obs:Lukas Eder i ett svar på aktuell fråga nämnde syntaxen för att använda nyckelordet DISTINCT i en aggregerad funktion:
COUNT(DISTINCT (foo, bar, ...)) syntax presenterad av HSQLDB
(eller COUNT(DISTINCT foo, bar, ...) som fungerar för MySQL också, men också för PostgreSQL, SQL Server, Oracle och kanske andra).
Men (tydligt nog) är det inte det som används här.



  1. CONTAINSTABLE jokertecken misslyckas vid frasmatchning?

  2. MySQL använder inte index när man frågar över BIT-fält med hjälp av bitvisa funktioner

  3. Finns det något sätt att låta MySQL-servern "pusha" DB-uppdateringar till ett klientprogram?

  4. PHP &MySQL:Hur kan jag använda SET @rank=0; i $query=