【问题标题】:two columns where clause merge with comma两列 where 子句用逗号合并
【发布时间】:2020-02-25 06:53:15
【问题描述】:

我想建立一个查询。

这是表格:

id  user_id  sn_no
1   22       00112233
2   22       987654325
3   22       65489732
4   25       984123123
5   25       9568456456
6   25       65456456

我想要这样的结果:

{
   "user_id":22,
   "sn_no": "00112233,987654325,65489732"
}
{
   "user_id":25,
   "sn_no": "984123123,9568456456,65456456"
}

谁能帮忙解决这个问题?

我试过了:concatGROUP_CONCAT,但无法得到结果。

你能帮我在加入查询中添加这个吗?

$users = \DB::table('users')
            ->join('users_mcu', 'users.id', '=', 'users_mcu.user_id')
            ->join('country_user', 'users.id', '=', 'country_user.user_id')
            ->join('country_phase_color', 'country_user.country_id', '=', 'country_phase_color.id')
            ->select('users.id', 'users.first_name', 'users.last_name', 'users.company', 'users.designation', 'users.lang', 'users.phone', 'users.disp_graph', 'users.user_image', 'users.email', 'users.role', 'users.created_at', 'users.updated_at', 'country_user.country_id', 'country_phase_color.country_name')
            ->get();

【问题讨论】:

  • DB::raw("(GROUP_CONCAT(sn_no SEPARATOR ',')) as sn_no 你用过这样的组连接吗
  • 默认SEPARATOR',',所以不需要重新定义
  • 请分享您在哪里尝试过 GROUP_CONCAT

标签: php mysql laravel eloquent


【解决方案1】:

试试这个-

YourModel::select('user_id')
         ->selectRaw('GROUP_CONCAT(sn_no) as sn')
         ->groupBy('user_id')
         ->get();

【讨论】:

  • 请查看更新后的答案。其实我不知道列名sn_no在哪个表...请确认一下sn_no
  • sn_no 存储在 user_mcu 表中
  • 它说 -------users.id' 不在 GROUP BY 中
  • 首先检查->select('*', DB::raw("(GROUP_CONCAT(users_mcu.sn_no SEPARATOR ',')) as sn"))
  • 让我详细解释一下:有 4 个表 users,users_mcu,country_user,country_phase_color。我想要带有country_phase_color.country_name,country_user.country_id的用户数据,所以这对我来说很好,现在我在消息顶部提到了users_mcu的表,其中user_id在那里,现在我希望在同一个查询中使用该列表sn_no 的逗号分隔
【解决方案2】:

试试这个。

$data = \DB::table('tablename')->select('user_id', \DB::raw('group_concat(sn_no) as sn_nos'))->groupBy('user_id')->get();

如果你想改变SEPARATOR,那么你可以使用SEPARATOR,否则默认为','

\DB::table('tablename')->select('user_id',DB::raw("(GROUP_CONCAT(sn_no SEPARATOR '@')) as `sn_nos`"))->groupBy('user_id')->get();

【讨论】:

    【解决方案3】:

    使用mysqlgroup_concat函数和laravelgroupBy and raw函数

    DB::tabe('tableName')
       ->select('id','user_id',\DB::raw('GROUP_CONCAT(`sn_no`) as sn_no_t'))
       ->groupBy('user_id')
       ->get()
    

    【讨论】:

      【解决方案4】:

      试试这个

      use DB;
      
      DB::table('tableName')
              ->select('id','user_id','DB::raw("(GROUP_CONCAT(sn_no SEPARATOR ',')) as `sn_nos`")')
              ->groupBy('user_id')
              ->get();
      

      【讨论】:

        【解决方案5】:

        你可以试试这个

        Model::select('user_id')
               ->selectRaw('GROUP_CONCAT(sn_nos) as sn_nos')
               ->groupBy('user_id')
               ->get();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-18
          • 1970-01-01
          • 2019-08-23
          • 1970-01-01
          • 2020-12-09
          • 2020-09-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多