mysql中的负限制偏移量

时间:2010-12-06 15:02:51

标签: mysql sql sql-order-by

我正在创建一个高分服务器,其中一个所需的功能是能够检索用户当前分数的高分。我目前有以下内容:

SELECT * FROM highscores 
WHERE score >= ( SELECT score FROM highscores WHERE userID = someID ) 
ORDER BY score, updated ASC 
LIMIT -9, 19

这里唯一的问题是LIMIT的偏移参数不能为负,否则我相信这会花花公子。总而言之,是否有任何技巧/方法可以为LIMIT偏移提供负偏移,或者是否有更好的方法可以完全解决这个问题?

1 个答案:

答案 0 :(得分:7)

你可以在对接单选选择查询中做一个真正的痛苦,或者只是这样做:

(SELECT * FROM highscores 
WHERE score <= ( SELECT score FROM highscores WHERE userID = someID ) 
ORDER BY score, updated ASC 
LIMIT 9)
UNION
(SELECT * FROM highscores 
WHERE score = ( SELECT score FROM highscores WHERE userID = someID ))
UNION 
(SELECT * FROM highscores 
WHERE score >= ( SELECT score FROM highscores WHERE userID = someID ) 
ORDER BY score, updated ASC
LIMIT 9)

我扔了一块来抓住指示用户的分数,所以它在列表的中间。如果需要,可选。另外,请勿使用SELECT *,请使用特定字段。清晰度总是更好,性能明智,*很糟糕。