2017-08-14 21 views
1

我有如下表:与条件SQL选择用户在多行验证

table services-users

第一列包含Services_ID,第二Users_ID和第三指示,如果用户对服务有效。 我需要确定哪些用户可以在这两项服务与ID 4和5

我写了与MySQL该查询(一次为用户):

SELECT DISTINCT User 
    FROM tablexxx 
WHERE Service IN (4, 5) 
    AND User NOT IN (SELECT User 
         FROM tablexxx 
        WHERE Service IN (4, 5) 
         AND Active = FALSE); 

该查询工作,但,是有写一个更好的技术方法?

正确的结果是:

Result

+0

不是技术,但一个更清洁的方式(IMHO):从tablexxx其中服务= 4和活性选择不同的用户= TRUE 相交 从tablexxx中选择不同的用户,其中Service = 5且active = TRUE –

回答

3
select user 
from your_table 
where service in (4,5) 
and active = TRUE 
group by user 
having count(distinct service) = 2 

select user 
from your_table 
group by user 
having sum(active = TRUE and service = 4) > 0 
    and sum(active = TRUE and service = 5) > 0 
+0

它工作得很好ctly。谢谢。 – Fabio