php - Mysql查询使用同一个表中的其他列值分组获得第二和第三最小值

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

<分区>

Possible Duplicate:
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

最佳答案

这会给你第二个值

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

关于php - Mysql查询使用同一个表中的其他列值分组获得第二和第三最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14439888/

相关文章:

php - 使用 PHP 锁定 SQL Server 数据库

javascript - 通过AJAX获取POST数据

c# - 在 sql asp.net 中获取过去 30 天未登录的用户

php Phar - mysql 连接在页面之间保持打开状态?

mysql - 根据列分隔记录

尽管错误报告被关闭,PHP 警告

php - MySql 不返回任何内容

mySQL左外连接不选择可能的所有数据

mysql - 从文本文件中删除重复行,以便 phpMyAdmin 成功将 SQL 语句插入数据库

SQL 查询查找从日期 x 到日期 y 的可用房间