MySQL的语法错误SQL错误[1064] [42000]:您在您的SQL语法错误
问题描述:
所以我有以下代码:MySQL的语法错误SQL错误[1064] [42000]:您在您的SQL语法错误
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 Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE(ip_address) FROM
visitors
)onvisitors
.visitorable_id
= 'db885a18-f0' at line 1
答
据我知道有没有这样的结构像UNIQUE(ip_address)
为SELECT
条款。您可能想要:
SELECT COUNT(id) visits, ip_address
FROM `visitors`
GROUP BY ip_address
返回错误:未选择数据库。 – ChrisBratherton
@ChrisBratherton好吧,请选择一个:) – Shadow
对不起,似乎正在运行查询的一部分。所以这让我更接近了一点,但是,Laravel现在正在抛出另一个hissy ... – ChrisBratherton