当总数大于 n 时,如何仅过滤掉结果?换句话说,只有智慧比 n 多的 IP(比如 500)
我试过了,->where('total','>',500)但没有用
谢谢
$visits = DB::table('visits')
->select('ip_address',DB::raw('count(*) as total'))
->where('timestamp', '>=',\Carbon\Carbon::now()->startOfDay())
->groupBy('ip_address')
->orderBy('total', 'desc')
->get();
Run Code Online (Sandbox Code Playgroud)
WHERE不能用于分组项目(例如count(*)),而 HAVING可以。您可以参考WHERE vs HAVING问题以了解更多详细信息,
你必须使用 having
->having('total', '>', 100)
Run Code Online (Sandbox Code Playgroud)
可选地,在您的情况下,您可以使用 haveRaw
->havingRaw('count(*) > 2500')
->havingRaw('total > 2500')
Run Code Online (Sandbox Code Playgroud)
参考:https : //laravel.com/docs/5.6/queries