我正在使用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 7
或WHERE Count >= 4
,因为我事先并不知道。
答案 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);