这是mssql代码片段
(Select column_name_1 from table_name_1 with(nolock) Where column_name_2='Y'
UNION ALL
Select column_name_1 from table_name_2 with(nolock) Where column_name_2='Y'
)ae ON ae.column_name_1 = '1234'
Run Code Online (Sandbox Code Playgroud)
我想在sqlalchemy中实现这个,这就是我如何接近它
q1 = session.query(table_name_1.column_name_1).filter(table_name_1.column_name_2=='Y')
q2 = session.query(table_name_2.column_name_1).filter(table_name_2.column_name_2=='Y')
q3 = q1.union_all(q2)
Run Code Online (Sandbox Code Playgroud)
但
我如何从q3获得column_name_1.我该怎么办?
q3.column_name_1 == '1234'
Run Code Online (Sandbox Code Playgroud)
在这里找到类似的问题
下面的代码应该这样做.几点说明:
label为列指定一个,否则sqlalchemy将创建自己的唯一名称sqlalchemy.sql.expression.union_all,这将产生Selectable而不是Query码:
q1 = session.query(table_name_1.column_name_1.label("column_name_1")).filter(table_name_1.column_name_2=='Y')
q2 = session.query(table_name_2.column_name_1.label("column_name_1")).filter(table_name_2.column_name_2=='Y')
q3 = union_all(q1, q2)
q3 = select([q3.c.column_name_1]).where(q3.c.column_name_1 == '1234')
Run Code Online (Sandbox Code Playgroud)
根据您的示例,您可以将过滤器直接添加到原始查询中.
| 归档时间: |
|
| 查看次数: |
3043 次 |
| 最近记录: |