我有一个数据库和两个显示相同内容的命令
SELECT name, score
FROM sm_easyrank
ORDER BY score DESC, name ASC
LIMIT 0, 10
选择按分数排序的玩家,如果两个玩家的分数相同,则按名称排序。
SELECT count(*)
FROM sm_easyrank
WHERE score >= (SELECT (score)
FROM sm_easyrank
WHERE steamid = '%s'
)
这将计算出我之前有多少玩家。
问题是:我在第一顺序有一个位置,在第二顺序有另一个位置(如果我与其他人有相同的分数)。我想订购名字相同的第二名球员。
sm_easyrank是表名
分数是一个分数(数字列)的列 steamid是一个独特的身份 name是一个名为people的列 抱歉我的英文!
答案 0 :(得分:0)
如果我理解正确,您可以使用JOIN
以及包含得分和名称的条件来执行您想要的操作:
SELECT count(*)
FROM sm_easyrank s JOIN
sm_easyrank s2
ON s2.steamid = '%s' AND
(s.score > s2.score OR
s.score = s2.score AND s.name <= s2.name
);