请注意,这是针对核心的,而不是orm。
希望有人可以帮助我解决这两个问题:
1)似乎有outerjoin
和普通join
,但是如何进行内连接?
2)执行多个连接的语法是什么。我能够做一个连接,但不确定多个连接的语法。
我的第一次加入看起来像这样:
select([...]).select_from(outerjoin(a, b))
但它会为此语法生成一些错误,以执行两个连接:
select([...]).select_from(outerjoin(a, b).select_from(outerjoin(ma, tr))
提前致谢。
答案 0 :(得分:2)
join
默认为INNER JOIN。 outerjoin
使用参数join
调用isouter=True
。如果我们想要的SQL查询是
SELECT a.col1, b.col2, c.col3
FROM a
LEFT JOIN b ON a.col1 = b.col1
LEFT JOIN c ON c.col1 = b.col2
然后sqlalchemy-core语句应为:
select(
[a.c.col1, b.c.col2, c.c.col3]
).select_from(
a.outerjoin(
b, a.c.col1 == b.c.col1
).outerjoin(
c, b.c.col2 == c.c.col1
)
)
on clause
。 outerjoin
函数可以嵌套而不是链接(就像你为简单连接所做的那样),即
outerjoin(outerjoin(a, b), c)
但我发现这种形式的可读性较差。