MySQL将重复的行列值合并为一行

时间:2018-10-02 00:31:15

标签: sql laravel eloquent

我陷入了查询生成器的困境。我想将重复的列值合并为一行。

例如我有

master
我想看 id name age rollnum 1 bob 24 null 2 bob 24 1234 如何在下面的查询中做到这一点。任何帮助,将不胜感激。预先感谢。

QueryBuilder

1 bob 24 1234.

1 个答案:

答案 0 :(得分:0)

您的查询将加入它们,但最终,它仅返回A中的值。

也许这样对您有用:

\DB::table('table1 as A')
->join(\DB::raw("(SELECT 
  id, name, age, rollnum, COUNT(*),
  FROM table2
  GROUP BY B.name, B.age
  HAVING count(*) > 1
  ) as B"), function($join){
    $join->on("A.name", "=", "B.name")->on("A.age", "=", "B.age");
})
->select(
   \DB::raw('IFNULL(A.id, B.id) AS id'),
   \DB::raw('IFNULL(A.name, B.name) AS name'),
   \DB::raw('IFNULL(A.age, B.age) AS name'),
   \DB::raw('IFNULL(A.rollnum, B.rollnum) AS rollnum')
 )
 ->orderBy('name')
 ->get();