2014-01-13 26 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'