Mysql查询在同一个表中使用group by other column value获取第二个和第三个最小值

时间:2013-01-21 13:37:06

标签: php mysql sql greatest-n-per-group

  

可能重复:
  My sql query to get middle row values using GROUP BY function

我的数据库结构就像

Id     Price     Code
1      0.12      93
2      0.13      93
3      0.54      93
4      0.96      93
5      0.10      94
6      0.30      94
7      0.90      94
8      1.40      94
9      2.30      94

我必须使用GROUP BY代码获取数据,并且我希望第二个最小行作为输出。 在上面的例子中,我希望输出为

Id     Price     Code
2      0.13      93
6      0.30      94

在其他情况下我想要第三个最小值,输出应该是

Id     Price     Code
3      0.54      93
7      0.90      94

1 个答案:

答案 0 :(得分:3)

这将为您提供第二个值

SELECT MAX(Price), Code
FROM
(
    SELECT ID, Price, Code
    FROM   TableName
    WHERE 
    (
       SELECT  COUNT(*) 
       FROM    TableName as f
       WHERE   f.Code = TableName.Code and 
               f.Price <= TableName.Price
    ) <= 2                                // << just change this value
) s
GROUP BY Code