2013-07-09 37 views
1

我有兩個帶有公共字段的表我想查找所有在第一個表中存在但不在第二個表中的 項(user_id's)。在sqlalchemy中找到表格之間的缺失值

表1(USER_ID,...) 表2(用戶ID,...)

USER_ID的並且在弗里斯特和第二表的userid是相同的。

回答

1

session.query(Table1.user_id).outerjoin(表2).filter(Table2.user_id ==無)

+0

嗨Jisson,我會建議不要外連接,因爲我真的不相信它會做你想做的事NT。無論table2中是否存在條目,外連接都將返回Table1中的每條記錄... – Trent

0

這是未經測試,我還是新SQLAlchemy的,但我認爲它應該把你推在正確的方向:

table2 = session.query(Table2.user_id).subquery() 
result = session.query(Table1).filter(Table1.user_id.notin_(table2)) 

我的猜測是這種類型的方法會導致下面的SQL:

SELECT table1.* FROM table1 WHERE table1.user_id NOT IN (SELECT table2.user_id FROM table2)