[英]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.