2014-01-13 28 views
0

什麼有2個表有以下的列:
TABLE1不能得到我想要使用SQL子查詢

++++++++++++++++ 
user_id NUMBER 
status_change_date DATE 

TABLE2

++++++++++++++++ 
user_id NUMBER 
count NUMBER 
status VARCHAR(10) 
enter_date DATE 

我要的是找出在表1的行其中用戶的status_change_date不等於「用戶的狀態爲'closed'的最後一個enter_date」。

我寫了下面的SQL

SELECT * FROM table1 a WHERE status_change_date <> 
(SELECT max(enter_date) FROM table2 b 
WHERE a.user_id = b.user_id AND b.status='closed'); 

但是,結果是一個列表user_id說明的是,status_change_date等於與地位的最後enter_date「關閉」。

+0

你能舉個例子的數據? – PeterRing

+0

你可能並不這麼認爲,但實際上並沒有檢查到user_ids在外部查詢中是否匹配。這樣想,你問的是:「首先建立一個所有最大enter_dates的列表,其中表b中的user_id在表a中,然後向我顯示錶a中的所有行,其中日期不在清單」。 –

回答

2

試試這個

SELECT * FROM table1 T JOIN Table2 S ON 
T.status_change_date <> max(S.enter_date) AND 
T.user_id = S.user_id 
WHERE S.status= 'closed'