mySQL:变量限制

时间:2011-06-02 06:53:45

标签: mysql sql limit

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

SELECT ... FROM table ORDER BY someColumn DESC LIMIT 5

结果将如下所示:

Name       Count
Person B   10
Person D   8
Person A   5
Person E   5
Person C   4

如果有更多的结果,如列表中的第五个条目(示例中为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

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

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分:0)

两种解决方案:

Sol 1:使用LIMIT 100左右,并消除程序中不需要的行。

Sol 2:执行两个查询,大多数成本更高:

SELECT * FROM (SELECT ... FROM table ORDER BY
  someColumn DESC LIMIT 5) 
  UNION (SELECT ... FROM table ORDER BY
         someColumn DESC LIMIT 50, 5);