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

PostgreSQL、2つのテーブルから選択しますが、テーブル2の最新の要素のみです

    PostgreSQLを使用する 拡張機能DISTINCT ON

    SELECT  DISTINCT ON (documents.id) *
    FROM    document
    JOIN    updates
    ON      updates.document_id = document_id
    ORDER BY
            documents.id, updates.date DESC
    

    これにより、各document.idから最初の行が取得されます ORDER BYのクラスター 注文します。

    確認するテストスクリプト:

    SELECT  DISTINCT ON (documents.id) *
    FROM    (
            VALUES
            (1, 'Test Title'),
            (2, 'Test Title 2')
            ) documents (id, title)
    JOIN    (
            VALUES
            (1, 1, '2006-01-01'::DATE),
            (2, 1, '2007-01-01'::DATE),
            (3, 1, '2008-01-01'::DATE),
            (4, 2, '2009-01-01'::DATE),
            (5, 2, '2010-01-01'::DATE)
            ) updates (id, document_id, date)
    ON      updates.document_id = documents.id
    ORDER BY
            documents.id, updates.date DESC
    


    1. Laravelwhere条件-pgsqlクエリ

    2. エラー:エラー1005:テーブルを作成できません(errno:121)

    3. BinaryTarballからMySQL8をセットアップする

    4. SQLクエリの配列?