我陷入了查询生成器的困境。我想将重复的列值合并为一行。
例如我有
master
我想看
id name age rollnum
1 bob 24 null
2 bob 24 1234
如何在下面的查询中做到这一点。任何帮助,将不胜感激。预先感谢。
QueryBuilder
1 bob 24 1234.
答案 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();