我正在尝试编写一个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
的列表。
答案 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)