PostgreSQL 支持 USING JOIN 语句中的子句,我想用它来简化我的查询。例如:
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我问的是 NATURAL JOIN,而不是 JOIN USING。
此外,我知道我可以用多个 $join->on(...)
语句产生几乎相同的效果,但是我有重复的列并且必须始终限定列在 a
和 b
中。也就是说,我必须写 'a.x'
而不是 'x'
即使这无关紧要,因为连接查询确保两者相等反正。 USING 子句巧妙地解决了这个问题,它只生成一个结果列 x
,知道只有一个值。
最佳答案
关于php - 如何使用 Laravel 的查询生成器在 JOIN 查询中生成 USING 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466007/