sql >> データベース >  >> RDS >> PostgreSQL

postgresのdistinct()関数(修飾子を選択しない)

    実際、これは SELECTの通常のDISTINCT修飾子ですが、誤解を招く構文があります(その点については正しいです)。

    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ポニー現在の質問 DISTINCT ONについて言及しました PostgreSQLで機能する拡張機能。
    しかし(Jayがコメントで正しく述べているように)クエリ(および結果)が異なるため、ここで使用されているものではありません。例:

    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 ...
    

    補足資料:

    注:への回答のLukasEder現在の質問 集計関数内でDISTINCTキーワードを使用する構文について言及しました:
    COUNT(DISTINCT (foo, bar, ...)) HSQLDBが特徴とする構文
    (またはCOUNT(DISTINCT foo, bar, ...) これはMySQLでも機能しますが、PostgreSQL、SQL Server、Oracleなどでも機能します。
    しかし(明らかに十分ですが)ここで使用されているものではありません。



    1. Laraveleloquentのsql_mode=only_full_group_byとの互換性を解決するにはどうすればよいですか?

    2. SQL Serverで大文字を小文字に変換する方法– LOWER()

    3. typeormを使用してnull許容データベースフィールドをNULLに設定するにはどうすればよいですか?

    4. Spring DataJPA2.0.9リリースの複数のデータベース構成