我正在创建一个高分服务器,其中一个所需的功能是能够检索用户当前分数的高分。我目前有以下内容:
SELECT * FROM highscores
WHERE score >= ( SELECT score FROM highscores WHERE userID = someID )
ORDER BY score, updated ASC
LIMIT -9, 19
这里唯一的问题是LIMIT的偏移参数不能为负,否则我相信这会花花公子。总而言之,是否有任何技巧/方法可以为LIMIT偏移提供负偏移,或者是否有更好的方法可以完全解决这个问题?
答案 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 *,请使用特定字段。清晰度总是更好,性能明智,*很糟糕。