我正在使用MySQL,希望生成以下SQL:
UPDATE tableA
INNER JOIN tableB
ON tableA.some_id = tableB.some_id
SET tableA.foo = 1
WHERE tableB.bar IN ('baz','baaz')
这是我的SQLAlchemy查询:
session.query(tableA).join(tableB, tableA.some_id == tableB.some_id) \
.filter(tableB.bar.in_(['baz','baaz']))\
.update({tableA.foo: 1})
但它生成的SQL是这样的(一个多表更新,没有连接条件,这不是我想要的):UPDATE tableA, tableB
SET tableA.foo = 1
WHERE tableB.bar IN ('baz','baaz')
我尝试将 .join 更改为另一个 .filter 以指定连接条件,但这并没有解决问题。我应该如何强制执行此简单的更新语句来执行正确的连接?