Php 在给定可能重复项的表格中选择前100个最大值

Php 在给定可能重复项的表格中选择前100个最大值,php,mysql,steam,Php,Mysql,Steam,我有一个具有以下结构的表-streamid、itemid、eventid、value,所有这些都是记录我插入的每小时数据的整数或大整数。因此,一个用户很可能有多个具有相同streamid、itemids甚至值的条目 我试图得到100个最高值——但同一项不能重复 到目前为止,我得到的是 SELECT itemid,value,steamid FROM $table GROUP BY itemid ORDER BY value DESC LIMIT 0,100 这给了我这个数据集(此处仅示

我有一个具有以下结构的表-streamid、itemid、eventid、value,所有这些都是记录我插入的每小时数据的整数或大整数。因此,一个用户很可能有多个具有相同streamid、itemids甚至值的条目

我试图得到100个最高值——但同一项不能重复

到目前为止,我得到的是

SELECT itemid,value,steamid 
FROM $table 
GROUP BY itemid 
ORDER BY value DESC 
LIMIT 0,100
这给了我这个数据集(此处仅示例):

但是,由于某些原因,这会忽略表中列出的真正最大值。我不知道如何格式化它,以便忽略具有相同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
非常感谢您的洞察力,我很乐意回答任何可能有助于解决此问题的问题。

尝试添加Distinct

SELECT DISTINCT itemid, value, steamid 
FROM $table 
ORDER BY value DESC 
LIMIT 0,100
试一试


这应该是唯一的itemid,但只提供单个值。

MySql上的Group By用于distinctWon,它不会返回所有行,因为您检查的是不同的itemid、value、streamid组合?@Jeemusu您希望从查询中检索什么?或者你想实现什么?我不是最初的OP,但我得到的印象是他/她在问什么。如我前面提到的,如果你以这种方式使用distinct,你将获得多个itemid条目。这里有一个小问题:我认为您不需要连接,您可以不使用MAX()功能包装
value
。也就是说,
从supportContacts GROUP BY itemid ORDER BY value DESC中选择itemid、max(value)、steamid。我认为您不需要加入,您是否可以使用max()功能包装
value
。也就是说,
从supportContacts组中按项目ID顺序按值DESC选择项目ID、最大值、蒸汽ID
SELECT DISTINCT itemid, value, steamid 
FROM $table 
ORDER BY value DESC 
LIMIT 0,100
SELECT * FROM (

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

GROUP BY itemid, value

LIMIT 0,100