sql - 如何限制laravel中每个类别的结果

标签 sql count limit laravel-5.8 rank

$user_info = DB::table('category_user')
                 ->select('user_id','category', DB::raw('count(*) as total'))
                 ->groupBy('user_id','category')
                 ->limit(3)
                 ->orderBy('total', 'desc')
                 ->get();

我写的代码只会显示所有类别的 3 个结果

我想限制每个类别的前 3 名的结果,例如有 10 个类别并且每个类别中有很多数据,我想只显示每个类别的前 3 名。

最佳答案

你能试试这个吗?

$user_info = DB::table('category_user')
                 ->select('user_id','category', DB::raw('count(*) as total'))
                 ->groupBy('user_id','category')->map(function($q){
                       return $q->take(3);
                   })->orderBy('total', 'desc')
                 ->get();

关于sql - 如何限制laravel中每个类别的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58662834/

相关文章:

sql - 使用 LEFT JOIN 的查询不返回计数为 0 的行

Drupal View 显示 - 设置查询结果的限制

windows - 限制批处理脚本中生成的进程数

php - 显示特定用户的 SQL 表数据

sql - 如何将 varchar 转换为 SQL 中任何格式的日期时间

mysql - 使用不同的 where 语句在 MySQL 查询中选择多个计数

Mysql查询结果有限

php - mysql如何进行多表操作?

mysql - 数据库设计/规范化结构需要包含 AND、OR、可选元素及其关系

mysql查询以计算具有一定数量产品的客户