sql >> Databáze >  >> RDS >> PostgreSQL

Different() funkce (ne select qualifier) ​​v postgresu

Ve skutečnosti to je běžný kvalifikátor DISTINCT na SELECT – ale se zavádějící syntaxí (v tom máte pravdu).

DISTINCT není nikdy funkce, vždy klíčové slovo. Tady je to použito (špatně), jako by to byla funkce, ale

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

je ve skutečnosti ekvivalentní všem následujícím formám:

-- přidejte mezeru za distinct :

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

-- odstraňte závorky kolem názvu sloupce:

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

-- obsah klauzulí odsazení:

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

-- odstraňte nadbytečný alias identický s názvem sloupce:

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

Doplňující četba:

Poznámka:OMG Ponies v odpovědi na aktuální otázka zmínil DISTINCT ON rozšíření prezentované PostgreSQL.
Ale (jak Jay správně poznamenal v komentáři) není to to, co se zde používá, protože dotaz (a výsledky) by byly jiné, např.:

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

ekvivalentní:

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

Doplňující četba:

Poznámka:Lukas Eder v odpovědi na aktuální otázka zmínil syntaxi použití klíčového slova DISTINCT uvnitř agregační funkce:
the COUNT(DISTINCT (foo, bar, ...)) syntaxe obsažená v HSQLDB
(nebo COUNT(DISTINCT foo, bar, ...) což funguje také pro MySQL, ale také pro PostgreSQL, SQL Server, Oracle a možná další).
Ale (jasně) to není to, co se zde používá.



  1. WCF, MySQL a transakce

  2. Jak porovnat dva databázové objekty v Oracle?

  3. Uložené procedury MySQL, Pandas a Use multi=True při provádění více příkazů

  4. více hodnot selectInput vytváří neočekávané chování dplyr (postgres).