试图让用户分配给另一个用户

时间:2015-09-14 13:41:56

标签: sql sql-server sql-server-2008

我正在尝试编写一个sql查询,其中我希望从下面给定的表中的另一个uid下分配uid的所有列表

uid rid assTo
1   1   NULL
2   2   1
3   1   2
6   11  3
7   11  1
17  11  1
18  11  1
19  11  1
21  11  1
22  2   1
23  11  22
24  2   22
25  10  24
26  10  24
27  11  26
28  11  26
29  10  24
30  11  3
31  11  29
32  11  29
33  11  29
34  11  29
35  11  29
36  11  29
37  11  29
38  11  29
39  11  29
40  11  29
41  11  29
47  11  2
48  11  2
50  11  26
51  11  2
52  11  26
53  11  29
55  11  1
56  11  1
57  11  652
68  11  652
70  11  652
71  11  652
72  11  2
74  1   1
75  11  2
76  11  652
80  11  652
86  11  652
87  11  1
88  11  26
89  11  29

我希望将uid的所有列表分配给另一个uid,即在上表assto列中指定

我该如何实施?

我的查询

select u1.assignto 'assignto',u2.userid 'userid'
from users u1 join users u2
on u1.assignto=u2.userid 

我想要的输出是当我搜索uid = 1时 我应该是上表中uid的列表。

1 个答案:

答案 0 :(得分:0)

IN解决方案:

select * from tablename
where uid in (select assTo from tablename)

自我JOIN解决方案:

select distinct t1.*
from tablename t1
  JOIN tablename t2 ON t1.uid= t2.assTo 

EXISTS解决方案(类似于IN):

select *
from tablename t1
where exists (select 1 from tablename t2
              where t2.assTo = t1.uid)