mySQL:变量限制

mar*_*tin 1 mysql sql limit

我正在使用SQL语句来检索列表中的前5个条目:

SELECT ... FROM table ORDER BY someColumn DESC LIMIT 5
Run Code Online (Sandbox Code Playgroud)

结果将如下所示:

Name       Count
Person B   10
Person D   8
Person A   5
Person E   5
Person C   4
Run Code Online (Sandbox Code Playgroud)

如果有更多的结果,如列表中的第五个条目(示例中为4),我也想展示它们.有没有办法通过单个查询实现这一目标?

所以我们假设完整列表如下所示:

Name       Count
Person B   10
Person D   8
Person A   5
Person E   5
Person C   4
Person H   4
Person I   4
------------
Person G   3
Person F   1
Person J   1
Run Code Online (Sandbox Code Playgroud)

如何修改我的查询以返回前七个结果?显然我不能使用LIMIT 7或者WHERE Count >= 4,因为我事先并不知道.

ype*_*eᵀᴹ 5

你的意思是你想要第五个结果,但是所有其他结果都在第5位,对吗?一种解决方案是首先获得第5个结果 - 使用子查询 - 然后得到您需要的结果:

SELECT ...
FROM table
WHERE someColumn >=
    ( SELECT someColumn 
      FROM table 
      ORDER BY someColumn DESC 
      LIMIT 4, 1                      <-- only the 5th 
    )
ORDER BY someColumn DESC 
Run Code Online (Sandbox Code Playgroud)