MySQL语法错误SQL错误[1064] [42000]:您的SQL语法中有错误

时间:2017-08-26 11:21:23

标签: php mysql sql laravel eloquent

所以我有以下代码:

public function scopePopular($query, $limit = 10)
    {
        $query->leftJoin(DB::raw('(SELECT COUNT(id) visits, UNIQUE(ip_address) FROM `visitors`) visitors'), function($join)
        {
            $join->on('visitors.visitorable_id', '=', 'db885a18-f0b7-4f55-9d93-743fbb5d9c94');
            $join->where('visitors.visitorable_type', '=', 'App\Profile');
        });

        return $query;
    }

产生以下查询:

select * from `profiles` inner join `profile_genres` on `profiles`.`id` = `profile_genres`.`profile_id` left join (SELECT COUNT(id) visits, UNIQUE(ip_address) FROM `visitors`) visitors on `visitors`.`visitorable_id` = `db885a18-f0b7-4f55-9d93-743fbb5d9c94` and `visitors`.`visitorable_type` = ? where `profile_genres`.`genre_id` = ? and `profiles`.`deleted_at` is null

此查询似乎不起作用,我猜测是由于语法错误而MYSQL在其错误消息中并不完全具体。

  

SQL错误[1064] [42000]:您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在visitors上使用“UNIQUE(ip_address)FROM visitors附近”的正确语法。visitorable_id =' db885a18 -f0'在第1行

1 个答案:

答案 0 :(得分:1)

据我所知,UNIQUE(ip_address)条款没有像SELECT这样的构造。你可能想要:

SELECT COUNT(id) visits, ip_address
FROM `visitors`
GROUP BY ip_address