我有一个复杂的请求,所以我把它简化了,希望我能解释清楚。
我有一个订阅表:
ID | Timestamp | User Id | Status
-----+---------------------+---------+---------
1 | 2013-06-14 16:39:23 | 1 | inactive
2 | 2013-11-20 10:18:17 | 1 | active
3 | 2013-06-14 16:39:23 | 2 | inactive
4 | 2014-03-01 17:18:26 | 3 | active
我想查询此表以查找状态为inactive
的订阅,以及 NOT 的用户是否还有active
订阅。
例如,这应该返回订阅ID 3,但不会返回订阅ID 1 - 因为ID 1的用户具有active
订阅(订阅ID 2)。
答案 0 :(得分:1)
以下查询应该可以解决问题:
select a.id from
table as a
inner join
(
select user_id, max(id)
from table
group by user_id
) as b
on (a.id=b.id and a.status='inactive')
答案 1 :(得分:0)
尝试以下操作,看看是否有效
SELECT *
FROM Table t
WHERE t.Status = 'inactive'
AND NOT EXISTS(SELECT 1 FROM Table t2
WHERE t2.user_id = t.user_id
AND t2.status <> 'inactive')