MySQL的找到每一批顶尖的结果(MySQL find top results for each g

2019-09-01 08:38发布

我寻觅了很多,但我无法找到答案或接近的东西。

我有这样一个表:

id              int(11) NO  PRI     auto_increment
attribute_id    int(11) YES         
user_id         int(11) YES         
result          int(11) YES             
x10             int(11) YES 

我需要从每个约5结果attribute_id

attribute_id可以是任意数量的,所以刚开始,我需要检查的attribute_id ,明年我一定要检查的结果为每attribute_id。

我无法找到我该怎么做没有比MySQL其他任何编程语言,但我知道你能。

例:

attribute_id    result
1               200
1               149
1               123
2               322
2               321
2               300
3               ...
3               ...

等等。

Answer 1:

SELECT  attribute_id, result
FROM    TableName a
WHERE 
        (
            SELECT  COUNT(*) 
            FROM    TableName b
            WHERE   a.attribute_id = b.attribute_id 
                    AND a.result <= b.result
        ) <= 5
  • SQLFiddle演示


Answer 2:

     SELECT     attribute_id, result
     FROM   TableName a
      WHERE 
    (
        SELECT  COUNT(*) 
        FROM    TableName b
        WHERE   a.attribute_id = b.attribute_id 
                AND a.result <= b.result
    ) <= 5 order by result DESC;


文章来源: MySQL find top results for each group