2014-09-05 48 views
2

我在表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會爲相應的管理器記錄多個記錄 。對於經理,MgrDbID是NULL。

我需要結果集如下,包含不同的UserID和UserID爲相應的MgrDbID如下(對於非管理員用戶)。任何人都可以請幫助下面的查詢。

UserID | MgrID 
111  | 112 
113  | 114 
115  | 114 
116  | 117 

回答

2
select u1.userid, min(u2.userid) as MgrID 
from UserMgr u1 
join UserMgr u2 on u1.UserMgrID = u2.ID 
group by u1.userid 
0

上面沒有返回期望的結果。以下爲我工作。

SELECT u1.userID, u2.UserID 
FROM users u1 INNER JOIN users u2 ON u1.MgrDbID = u2.ID 
GROUP BY u1.userID, u2.UserID