排名查询不起作用

问题描述 投票:0回答:2

关于如何计算和排名,我已经查看了各种SO问题。我的数据库中有一个名为vDestination的字段,我想得到每个目的地的计数和排名。我正在使用Codeigniter。我有以下内容:

$sql = ("SET @curRank := 0;\r\n
            SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination");

这看起来像有效的SQL语法,但我不断收到数据库错误。有人请指出这个查询有什么问题吗?

发生数据库错误 错误号码:1064

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第3行使用“SELECT vDestination,COUNT(*)AS count,@curRank:= @curRank + 1 AS rank FROM tb”附近使用正确的语法

SET @curRank := 0;
SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank
FROM tbl_user_trip ORDER BY vDestination

这是我得到的错误。

php mysql codeigniter
2个回答
2
投票

试试这样:

 $this->db->query("SET @curRank := 0");
 $this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination");

1
投票

工作方案如下:

function getMostPopularDestinations()
    {
        $this->db->query("SET @curRank := 0");
        $query = $this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip GROUP BY vDestination ORDER BY vDestination");
        return $query->result_array();
    }

所以@tyro建议,但也有GROUP BY。

© www.soinside.com 2019 - 2024. All rights reserved.