php - 如何在 SQL 中获取超过限制 5 的多个相同输出的 TOP 5 值

标签 php mysql

    Database 1           Database 2 
||==============||    ||==============||
||user || value ||    ||user || value ||
||-----||-------||    ||-----||-------||
|| 1   ||  50   ||    || 1   ||  50   ||
|| 2   ||  50   ||    || 2   ||  50   ||
|| 3   ||  50   ||    || 3   ||  40   ||
|| 4   ||  40   ||    || 4   ||  40   ||
|| 5   ||  40   ||    || 5   ||  30   ||
|| 6   ||  40   ||    || 6   ||  20   ||
|| 7   ||  40   ||    || 7   ||  20   ||
|| 8   ||  30   ||    || 8   ||  10   ||
|| 9   ||  30   ||    || 9   ||  10   ||
||==============||    ||==============||

我需要搜索前 5 个最高值,但我需要的是具有 50 和 40 个值的 7 个用户,而不是仅 5 个结果。

我不能忽视他们其他的顶级用户。 如果可以用 SQL 来完成那就太好了。如果没有 PHP 帮助就可以了。

     Result 1              Result 1
||==============||    ||==============||
||user || value ||    ||user || value ||
||-----||-------||    ||-----||-------||
|| 1   ||  50   ||    || 1   ||  50   ||
|| 2   ||  50   ||    || 2   ||  50   ||
|| 3   ||  50   ||    || 3   ||  50   ||
|| 4   ||  40   ||    || 4   ||  50   ||
|| 5   ||  40   ||    || 5   ||  50   ||
|| 6   ||  40   ||    ||==============||
|| 7   ||  40   ||
||==============||    

最佳答案

SELECT user, value
FROM Database
WHERE value in (
    SELECT value
    FROM Database
    ORDER BY value DESC
    LIMIT 5)
)
ORDER BY value DESC, user

另一种方法是:

SELECT user, value
FROM Database
WHERE value >= (SELECT MIN(value)
                FROM (SELECT value
                      FROM Database
                      ORDER BY value DESC
                      LIMIT 5) AS x
                )
ORDER BY value DESC, user

关于php - 如何在 SQL 中获取超过限制 5 的多个相同输出的 TOP 5 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171873/

相关文章:

php - 管理每周时间表的数据库模式

javascript - 谷歌地图信息窗口无法正确显示,但当我打开 firbug 时,它运行良好

php - WooCommerce 小部件 - 从日期到日期的订单列表

php - 默认 cURL 选项值

php - 类的实例化如何适用于 Laravel 中的不同路线

mysql - 用于连接两个 PostgreSQL 数据库的端口 5432 的替代方案?

mysql - 错误1093(HY000): You can't specify target table 'employee_salary' for update in FROM clause

php - MySQL连接两个表,其中两个日期之间的日期

mysql - 将数组传递给 MySQL 存储例程

mysql - delphi mysql离线连接