我正在尝试在 sqlalchemy 核心中生成以下 sql。我无法让连词 AND OR 中的括号出现。
select from member t1
inner join member t2
on (
(
t1.first_name = t2.last_name and
t1.last_name = t2.first_name and
t1.dob = t2.dob
)
or (
t1.last_name = t2.last_name and
t1.first_name = t2.first_name and
t1.dob = t2.dob
)
)
group by t2.id
我正在使用的 sqlalchemy 核心语句是:
selStmt = select([t1]).select_from(
t1.join(
t2, or_(
and_(
t1.c.first_name == t2.c.last_name,
t1.c.last_name == t2.c.first_name,
t1.c.dob == t2.c.dob
),
and_(
t1.c.last_name == t2.c.last_name,
t1.c.first_name == t2.c.first_name,
t1.c.dob == t2.c.dob
)
)
)
).group_by(t2.c.id)
生成的sql代码为:
SELECT t1
FROM t1
JOIN t2 ON
t1.first_name = t2.last_name AND
t1.last_name = t2.first_name AND
t1.dob = t2.dob OR
t1.last_name = t2.last_name AND
t1.first_name = t2.first_name AND
t1.dob = t2.dob
GROUP BY t2.id
由于括号不包括在内,逻辑不正确。如何在连词中获得括号?