Tricky sql选择不同的用户

时间:2010-12-16 11:57:49

标签: sql sql-server

给出以下数据/表:

User|Value
A 1
A 1
B 3
B 1
A 1
A 3
A 3
B 1
B 1
A 1
B 1 
B 1
A 3
A 3
B 1

在这里,我想挑选那些多次交替使用Value列的用户。 例如。这里B不是问题,因为它只改变一次,另一方面A改变,我想要一个返回A的sql选择。

我还没有找到任何关于如何做到这一点的例子! :(

2 个答案:

答案 0 :(得分:1)

我认为这应该有效:

SELECT DISTINCT u1.UserName
FROM Users u1
INNER JOIN Users u2 ON u1.UserName = u2.UserName
INNER JOIN Users u3 ON u1.UserName = u3.UserName
WHERE u1.Value <> u2.Value
AND u1.UserID < u2.UserID
AND u2.Value <> u3.Value
AND u2.UserID < u3.UserID

假设您的表名为“用户”,当然:)

答案 1 :(得分:0)

declare @t table(user_id char(1), val tinyint)

insert into @t
select 'A', 1
union all
select 'A', 1
union all
select 'B', 3
union all
select 'B', 1
union all
select 'A', 1
union all
select 'A', 3
union all
select 'A', 2
union all
select 'A', 1
union all
select 'B', 1
union all
select 'B', 1
union all
select 'A', 1

select user_id, count(distinct val)
from @t
group by user_id
having count(distinct val) > 2