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

ORDERBYとGROUPBYを一緒に使用する

    group byを正しく使用するこれを行う1つの方法 :

    select l.* 
    from table l
    inner join (
      select 
        m_id, max(timestamp) as latest 
      from table 
      group by m_id
    ) r
      on l.timestamp = r.latest and l.m_id = r.m_id
    order by timestamp desc
    

    仕組み:

    • 個別のm_idごとに最新のタイムスタンプを選択します サブクエリ内
    • tableから行のみを選択します サブクエリの行に一致するもの(この操作-結合は実行されますが、2番目のテーブルから列が選択されていないため、フィルターとして使用されます-は"セミジョイン" 興味があった場合に備えて)
    • 行を並べ替えます


    1. FOREIGN KEY制約によって参照されているため、テーブルを切り捨てることができませんか?

    2. PostgreSQL10でのICUサポートとのより堅牢な照合

    3. SQLServerのテキスト型とvarcharデータ型

    4. Concat関数が機能していません-引数の数が無効です