【发布时间】:2017-03-14 23:00:10
【问题描述】:
我正在尝试将原始 SQL 转换为 sqlalchemy 核心/orm,但我遇到了一些困难。这是 SQL:
SELECT
(SELECT UNNEST(MyTable.my_array_column)
INTERSECT
SELECT UNNEST(ARRAY['VAL1', 'VAL2']::varchar[])) AS matched
FROM
MyTable
WHERE
my_array_column && ARRAY['VAL1', 'VAL2']::varchar[];
以下查询给了我一个 FROM 子句,我在嵌套的 SELECT 中不需要它:
matched = select([func.unnest(MyTable.my_array_column)]).intersect(select([func.unnest('VAL1', 'VAL2')]))
# SELECT unnest(MyTable.my_array_colum) AS unnest_1
# FROM MyTable INTERSECT SELECT unnest(%(unnest_3)s, %(unnest_4)s) AS unnest_2
如何告诉select 不包含FROM 子句?请注意,func.unnest() 只接受一列。所以我不能使用func.unnest('my_array_column')。
【问题讨论】:
标签: python sql postgresql orm sqlalchemy