【问题标题】:How to select a field based on the maximum number of rows如何根据最大行数选择字段
【发布时间】:2015-08-12 16:12:48
【问题描述】:

我正在使用 laravel 4.2,我有如下表格,看起来像这样

 ID|chosen(boolean('0','1'))|subject|user_id
  1|1                       |cricket|2
  2|0                       |cricket|3
  3|1                       |rugby  |2

我想选择具有最多选择行的user_id,或者换句话说,选择在他们选择的列中具有最多 1 的用户。所以在这种情况下,用户 2 将是正确的结果。

【问题讨论】:

    标签: sql laravel eloquent


    【解决方案1】:

    我不知道 laravel 但是你可以使用下面的 sql 来查询

     select user_id from(select max(count_ones), user_id from(select
     count(id) as count_ones,user_id from table_name where
     chosen = 1 group by user_id) as table1) as table2
    

    这里是相同的 sqlfiddle 链接:http://sqlfiddle.com/#!9/2ca40/1

    编辑: 使用其他答案中建议的更高效的 sql:

    select count(id) as count_ones,user_id from table_name 
    where chosen = 1 group by user_id order by count_ones desc limit 1
    

    【讨论】:

      【解决方案2】:

      你可以使用查询生成器来做这样的事情

      $table = DB::table('table')
                   ->select(array(DB::raw('count(User_ID) AS CountUser')))
                    ->where('chosen', 1)
                   ->orderBy('CountUser', 'desc')
                   ->groupBy('User_ID')
                   ->first();
      

      【讨论】:

      • 谢谢,但我似乎无法在我的视图中查看结果。你能帮忙吗?
      • 传递给视图你可以这样做 View::make('viewname',array('userDetails' => $table));
      • 要访问视图内的数据,您可以执行 $table->CountUser
      • 对不起@kamlesh.bar 我不知道userDetails 是什么意思?我通过这样做传递到视图:`return View::make('secondhome', compact(array('table')));` 是的,我这样做了$table->CountUser,但我只得到数字 1 而不是 user_id .还有stackoverflow.com/questions/30538520/…
      猜你喜欢
      • 2021-06-30
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多