2013-07-02 70 views
-1

在下表中,我想显示每个user_id,该列表在中显示为0和1两者is_logged_in标志。在Oracle/SQL中如何选择具有相同列id但非ID列的值不同的行

__________________________ 
| user_id | is_logged_in | 
+------------------------+ 
| A |  1  | 
+------------------------+ 
| B |  1  | 
+------------------------+ 
| B |  0  | 
+------------------------+ 
| C |  0  | 
+------------------------+ 
| D |  0  | 
+------------------------+ 
| D |  1  | 
+------------------------+ 
| C |  0  | 
+------------------------+ 

是否可以在没有GROUP BY条件下完成?如果可能,你还可以告诉我如何在没有GROUP BY的情况下进行查询。感谢所以。查询后

结果:

___________ 
| user_id | 
+---------+ 
| B | 
+---------+ 
| D | 
+---------+ 
+0

我不明白实际问题,我想你可能会添加更多信息。 –

+0

为什么你想在没有'group by'条件下做?这是作业要求的一部分吗? –

回答

2

什么是你想实现什么逻辑?为什么你想返回B和D,但不是A或C?

如果问题是 “给我的每user_id与显示了两个0,并在is_logged_in标志1”

select user_id 
    from table_name 
group by user_id 
having count(distinct is_logged_in) = 2 

select user_id 
    from table_name 
where is_logged_in = 0 
intersect 
select user_id 
    from table_name 
where is_logged_in = 1 

select a.user_id 
    from table_name a, 
     table_name b 
where a.rowid != b.rowid 
    and a.user_id = b.user_id 
    and a.is_logged_in = 0 
    and b.is_logged_in = 1 
0
SELECT * 
FROM table 
WHERE (user_id = 'B' or user_id = 'D') 
0
select distinct user_id 
from table_name a 
inner join table_name b on a.user_id = b user_id 
where a.is_logged_in <> b.is_logged_in 
相关问题