sql计数和顺序

Posted

技术标签:

【中文标题】sql计数和顺序【英文标题】:sql count and order 【发布时间】:2016-02-21 18:42:23 【问题描述】:

我有一个数据库和两个命令来显示相同​​的东西

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 是表名

score 是带有分数的列(数字列) steamid 是唯一的 id name 是一个包含人名的列 对不起我的英语!

【问题讨论】:

请编辑您的问题并提供示例数据和所需结果。目前尚不清楚您要返回什么。那是steamid,它与name 有什么关系? 我编辑了,不知道现在好不好,我是最新的 那么你想找出所有得分比你高的人的名字和分数吗? 见:msdn.microsoft.com/en-us/library/ms176102.aspx 这适用于哪个 RDBMS?无论您使用的是 mysql、PostgreSQL、Oracle、SQL Server 还是 IBM DB2——甚至是其他东西,它通常都会产生影响。请为您的问题添加相关标签! 【参考方案1】:

如果我理解正确,您可以使用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
        );

【讨论】:

这行得通,非常感谢。下次我会更明确。我是新来的,我不知道这里的情况如何

以上是关于sql计数和顺序的主要内容,如果未能解决你的问题,请参考以下文章

无论如何,为了提高 SQL 查询的性能,以按标签匹配计数查找具有顺序的行

您将如何使用 T-SQL 获得满足条件的顺序/连续记录的最大/最大计数

SQL Server:查找学生在自定义日期内的连续缺勤计数

jdbc的executeBatch()返回正确的行计数

对多级组的组内观察计数/分配组顺序?

Redshift SQL:如何获取今天的计数和前 3 天的计数总和