我有两个表,其中一个表有两列,一行只包含其中一列中的数据:
表2:
| column1 | column2 | ------------------------- | something | Null | ------------------------- | Null | something | -------------------------
我想做的事情如下:
q = session.query(Table1.column1, (Table2.column1, Table2.column2).label('content')) \
.outerjoin(Table2) \
.all()
for v in q:
x = v.column1
content = v.content
print(x, content)
怎么做到呢?
Sql coalesce应该有所帮助。它将返回值列表中的第一个非空值。
from sqlalchemy import func
q = session.query(Table1.column1, func.coalesce(Table2.column1, Table2.column2).label('content')) \
.outerjoin(Table2) \
.all()