0

サンプルデータを含む次の表があります。

Record_ID    Counter    Serial    Owner
1           0           AAA       Jack
2           1           AAA       Kevin
3           0           BBB       Jane
4           1           BBB       Wendy

上記のようなデータに基づいて、Counter数値あたりの最大値を持つレコードを取得する MySQL の SQL クエリを作成しようとしていますSerial私が問題を抱えているように見える部分は、更新された最後の 50 個の一意のシリアル番号を取得するためのクエリを取得することです。

以下は、この StackOverflow questionに基づいてこれまでに思いついたクエリです。

SELECT * 
FROM   `history` his 
   INNER JOIN(SELECT serial, 
                     Max(counter) AS MaxCount 
              FROM   `tracking` 
              WHERE  serial IN (SELECT serial 
                                FROM   `history`) 
              GROUP  BY serial
              ORDER  BY record_id DESC) q 
           ON his.serial = q.serial 
              AND his.counter = q.maxcount 
LIMIT  0, 50
4

1 に答える 1

1

これは、古典的問題のように見えますが、次のような方法で解決できます。

select his.Record_ID, his.Counter, his.Serial, his.Owner
from History his
inner join(
    select Serial, max(Counter) Counter
    from History
    group by Serial
) ss on his.Serial = ss.Serial and his.Counter = ss.Counter

データセットに特定のフィルターを設定する場合は、サブクエリでそのフィルターを適用する必要があります。

問題に関する詳細な説明が記載された別のソース: SQL Select rows with Max Value on a Column

于 2013-04-15T20:12:36.597 に答える