0

次の構造のテーブルがあります-steamid、itemid、eventid、value、すべて、挿入した1時間ごとのデータをログに記録するintまたはbigintです。したがって、ユーザーは、同じsteamid、itemid、さらには値を持つ複数のエントリを持っている可能性があります。

上位100個の値を取得しようとしていますが、同じ項目を繰り返してはなりません。

私が今まで持っているのは

SELECT itemid,value,steamid 
FROM $table 
GROUP BY itemid 
ORDER BY value DESC 
LIMIT 0,100

これでこのデータセットが得られます(ここでのみサンプル):

itemid      value   steamid
=================================================
599291414   66397   76561198032389066
779150329   62882   76561198001229760
773965297   51895   76561198014617403
332883551   43201   76561197992659494
333434836   40880   7656119799359013

ただし、これは何らかの理由で、表にリストされている真の最大値を無視します。同じitemidとsteamidを持つ重複エントリを無視できるように、これを他にどのようにフォーマットできるかわかりません。Steamidでグループ化できるとは思いません。そうすると、Steamidに関連付けられている可能性のある他のアイテムが無視されるためです。

グループ化せずに選択した場合の最初のいくつかは次のとおりです。

 itemid     value   steamid
 =====================================
 1011809265 753665  76561198010314894
 376615188  101684  76561197989760193
 478937438  83448   76561198010314894
 478937438  83448   76561198010314894
 376662587  72693   76561197989760193
 376662587  72693   76561197989760193
 599291414  66454   76561198032389066
 599291414  66454   76561198032389066
 599291414  66454   76561198032389066

インサイトに感謝します。これを理解するのに役立つ可能性のある質問には喜んでお答えします。

4

2 に答える 2

2

試す

SELECT * FROM (

  SELECT itemid,value,steamid FROM $table GROUP BY itemid ORDER BY value DESC
) as tbl1

GROUP BY itemid, value

LIMIT 0,100

これは一意のitemidである必要がありますが、単一の値のみを提供します。

于 2012-08-14T03:50:54.243 に答える
0

Distinctを追加してみてください。

SELECT DISTINCT itemid, value, steamid 
FROM $table 
ORDER BY value DESC 
LIMIT 0,100
于 2012-08-14T03:47:20.420 に答える