[英]Why this query doesn't work (problem with EXISTS)
我正在努力处理这样的查询(由 sqlalchemy 生成。为清楚起见,我已将其重命名)
SELECT table.x + :dx AS cx, table.y + :dy AS cy
FROM table
WHERE NOT (EXISTS (SELECT * FROM table AS table_1
WHERE table_1.x = cx AND table_1.y = cy))
AND (EXISTS (SELECT * FROM table2
WHERE table2.table_id = table.id))
对于 dx、dy = 1、1 和表格:
Table:
id | x | y
----+---+---
1 | 0 | 0
Table2:
id | table_id
----+----------
1 | 1
它应该返回:
cx | cy
----+----
1 | 1
然而,第二个条件似乎返回假。
编辑: SQLAlchemy 中的事务刷新似乎是一个问题。 我认为如果执行查询(非 ORM 映射),它会自动刷新。 但是,在这种情况下,它似乎没有被刷新或以不正确的顺序刷新。 无论如何,添加额外model.DBSession.flush()
似乎可以解决问题。
正如编辑中所写,问题出在冲洗中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.