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

最終日で結合されたSQL

    DISTINCT ON> またはあなたの友達です。これが正しいの解決策です 構文:

    SELECT a.id, b.updated, b.col1, b.col2
    FROM   table_a as a
    LEFT   JOIN (
       SELECT DISTINCT ON (table_a_id)
              table_a_id, updated, col1, col2
       FROM   table_b
       ORDER  BY table_a_id, updated DESC
       ) b ON a.id = b.table_a_id;
    

    または、行全体を取得するには table_bから :

    SELECT a.id, b.*
    FROM   table_a as a
    LEFT   JOIN (
       SELECT DISTINCT ON (table_a_id)
              *
       FROM   table_b
       ORDER  BY table_a_id, updated DESC
       ) b ON a.id = b.table_a_id;
    

    この手法の詳細な説明と、この密接に関連する質問の下での代替ソリューション:
    各GROUPBYグループの最初の行を選択しますか?



    1. コードファーストマイグレーションとストアドプロシージャ

    2. タイムスタンプNOTNULLDEFAULT CURRENT_TIMESTAMPは、あるマシンではnullにできますが、別のマシンではnullにできませんか?

    3. PDOを使用して、UPDATEステートメントが成功したことを確認するにはどうすればよいですか?

    4. レーキが中止されました!エラー:データベースの所有者である必要があります