【问题标题】:C# returning row value (rank) after Order By via SQLiteC# 通过 SQLite 在 Order By 之后返回行值(排名)
【发布时间】:2015-01-14 08:33:44
【问题描述】:

我的目标是按“货币”编写我的表的代码顺序。然后它将使用“用户”的字符串输入并在 Order By 查询后找到该用户。它将返回该用户的行号,这基本上是排名。这是最有效的方法吗?我发现我必须实际计算似乎效率不高的每一行。提前谢谢大家。

    public string rank(string user)
    {
        String sql = "SELECT user FROM '" + channel + "' ORDER BY currency DESC LIMIT 10";
        String rank = "";
        using (cmd = new SQLiteCommand(sql, myDB))
        {
            using (SQLiteDataReader r = cmd.ExecuteReader())
            {
                ///* Calculate the row number after order by *////
            }
        }
        return rank;
    }

【问题讨论】:

标签: c# sqlite


【解决方案1】:

用户的排名等于货币价值大于用户自身货币价值的用户数量。

根据这个答案https://stackoverflow.com/a/5685623/3828960,您可以使用子查询计算用户数:

SELECT 
    chan1.*, 
    (
        SELECT COUNT(*) 
        FROM channel AS chan2
        WHERE chan2.currency > chan1.currency
    ) as ChanRank
FROM channel as chan1
WHERE chan1.user = 'UserName'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多