我在表UserMgr中有以下数据。
ID | UserID | MgrDbID | DeptID
1 | 111 | 2 | 1
2 | 112 | NULL | 1
3 | 113 | 5 | 1
4 | 113 | 6 | 2
5 | 114 | NULL | 1
6 | 114 | NULL | 2
7 | 115 | 5 | 1
8 | 115 | 6 | 2
9 | 116 | 10 | 1
10 | 117 | NULL | 1
包括经理在内的所有用户都出现在上表中。 MgrDbID指的是ID列。用户可能有多个记录,在这种情况下会有 由DeptID为相应管理器的多个记录。对于Managers,MgrDbID为NULL。
我需要结果集如下,其中包含相应MgrDbID的不同UserID和UserID,如下所示(对于非管理者的用户)。任何人都可以请求帮助查询以下内容。
UserID | MgrID
111 | 112
113 | 114
115 | 114
116 | 117
答案 0 :(得分:2)
select u1.userid, min(u2.userid) as MgrID
from UserMgr u1
join UserMgr u2 on u1.UserMgrID = u2.ID
group by u1.userid
答案 1 :(得分:0)
以上并未返回预期结果。以下对我有用。
SELECT u1.userID, u2.UserID
FROM users u1 INNER JOIN users u2 ON u1.MgrDbID = u2.ID
GROUP BY u1.userID, u2.UserID