MySQL-通过 user_id 基于列的值与相同 user_id 其他行选择行

标签: sql MySQL
发布时间: 2015/6/11 23:09:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个复杂的请求,所以我简化了下来,并希望我解释的很好。

我有订阅表:

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 ,和谁也有 active 订阅。

例如,这应返回订阅 ID 3,但不是订阅 ID 1-因为 ID 1 用户 active 订阅 (被订阅 ID 2)。

解决方法 1:

请尝试以下方法,看看是否这效果

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')
官方微信
官方QQ群
31647020