我有一个(游戏)排行榜表,其中包含由另一个查询更新的排名。它以ID为中心 - 当我查询表时,我最好想要取回N条记录。所以,我已经做了UNION在记录都与限制N/2,像这样:确保从MySQL查询返回正确的行数
(SELECT * FROM test1 t WHERE t.rank > (SELECT rank FROM test1 t2 WHERE id=ID)+0 ORDER BY rank LIMIT 0, N/2)
UNION ALL
(SELECT * FROM test1 t WHERE t.rank <= (SELECT rank FROM test1 t2 WHERE id=ID)+0 ORDER BY rank desc LIMIT 0, N/2) ORDER BY rank
尽管这并不完全工作的时候在领先榜首位,它只会返回较低的N/2。有没有办法确保它总能返回N条记录?我确实认为你可以有目的地获得比需要更多的记录,然后修剪你不需要的记录。虽然我不知道如何用查询来做到这一点!
任何帮助表示赞赏:)
很好的答案!干杯。 –