PostgreSQL在JOIN语句中支持USING子句,我想用它来简化我的查询。例如:
select * from a join b using (x, y, z) where ... order by x;
如何使用Laravel的查询生成器或Eloquent表达这一点?
DB::table('a')
->select('*')
->join('b', function($join))
->where(...)
->orderBy('x');
请注意,此问题与https://stackoverflow.com/questions/31465918/how-to-generate-a-natural-join-query-with-laravels-query-builder不同,我询问的是自然加入,而不是加入使用。
另外,我知道我可以使用多个$join->on(...)
语句产生几乎相同的效果,但后来我有重复的列,并且必须始终都是a
和{中的质量列{1}}。也就是说,我必须写b
而不是'a.x'
,即使它并不重要,因为连接查询确保两者都相等。 USING子句通过仅生成单个结果列'x'
来巧妙地解决这个问题,知道只有这一个值。
答案 0 :(得分:1)