sql - 选择具有相关数据的不同行

标签 sql sql-server-2005

我的 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。

我需要如下结果集,其中包含相应 MgrDbID 的不同 UserID 和 UserID,如下所示(对于不是管理员的用户)。任何人都可以帮忙查询以下内容吗?

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

最佳答案

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

关于sql - 选择具有相关数据的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694502/

相关文章:

MySQL 选择表中最近的较低值

sql - 在没有网络授权的情况下使用 Google Cloud SQL

sql-server - 管道的另一端没有进程

SQL Server 2005 全文搜索 - 我可以搜索正斜杠字符吗?

sql - 如何动态选择在存储过程中选择哪个表(具有相同架构)

sql-server - SQL Server 2005 按大小自动增长

SQL 效率行或表

sql - MSSQL 查询帮助?应该很容易,但我必须要更多的咖啡?

MySQL "fill up"直方图中缺失值

sql-server-2005 - 如何在 SQL Server 中使用 SQL 查询生成表的创建脚本