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

MySql:最新のレコードを提供しないことを組み合わせて注文およびグループ化

    どうすればGROUP BY id_thread id_threadがない場合 テーブルの列?

    SELECT * 
    FROM contacts 
    WHERE id_receiver = 1 
                                     --- GROUP BY id_thread
                                     --- removed 
    ORDER BY created DESC
    LIMIT 1                          --- only show one row
    

    コメントに基づいて、必要なのは最新のものです(createdの順に並べられています) )すべてのid_threadの行 、これは別のより複雑なクエリです。この種のクエリには、 [greatest-n-per-group]

    SELECT c.* 
    FROM contacts AS c
      JOIN
        ( SELECT id_thread, MAX(created) AS created 
          FROM contacts 
          WHERE id_receiver = 1  
          GROUP BY id_thread
        ) AS g 
        ON (g.id_thread, g.created) = (c.id_thread, c.created) 
    WHERE c.id_receiver = 1  
    


    1. SQLServerの「intをデータ型numericに変換する算術オーバーフローエラー」を修正しました

    2. 有用なOracleAppsプリンタークエリのトップ9

    3. NOT INサブクエリはNULL値でどのように機能しますか?

    4. 多数または未定義のカテゴリとのクロス集計