Php 如何在SQL中使用多个超过5的相同输出获取前5个值

Php 如何在SQL中使用多个超过5的相同输出获取前5个值,php,mysql,Php,Mysql,我需要搜索前5名的最高值,但不是只有5个结果,我需要这7个50和40值的用户 我不能忽视其他顶级用户。 如果可以在SQL中完成,那就太好了。如果没有PHP的帮助就可以了 Database 1 Database 2 ||==============|| ||==============|| ||user || value || ||user || value || ||-----||-------|| ||-----||-------|| || 1

我需要搜索前5名的最高值,但不是只有5个结果,我需要这7个50和40值的用户

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

    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   ||
||==============||    ||==============||
另一种方式是:

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
子查询选择第五行(
OFFSET
从0开始计数,而不是从1开始计数)。
where
子句只选择大于该值的任何值


如果您想在两个合并的表上运行此操作,那么您需要使用
union-all

我很困惑。你想要前五名还是前七名?显示这个假设查询的预期结果。@wavemode他想要的是前5名加上关系。哦,好的,原来只显示数据库1。第二个表是做什么的?我以为第二个结果是第二个数据库的预期结果。但现在我不确定。为什么第二个结果中的所有值都是
50
?+1我在回答中没有想到偏移选项。
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
SELECT t.*
FROM table t CROSS JOIN
     (SELECT t.*
      FROM table t
      ORDER BY value DESC
      LIMIT 1 OFFSET 4
     ) t5
WHERE t.value >= t5.value;