簡體   English   中英

為什么這個查詢不起作用(EXISTS 的問題)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM