Jac*_*cob 5 sql t-sql sql-server stored-procedures recursive-query
可以说我有下表
User_ID Manager_ID
---------------------
Linda Jacob
Mark Linda
Kevin Linda
Steve Mark
John Kevin
Run Code Online (Sandbox Code Playgroud)
基本上,要求是将所有管理器拉到您要搜索的user_id下.所以,例如,如果我发送'琳达'然后它应该返回我:
'Mark', 'Kevin', 'Steve', 'John'
Run Code Online (Sandbox Code Playgroud)
或者,如果我发送'马克',那么它应该归还给我:
Steve
Run Code Online (Sandbox Code Playgroud)
我听说过递归函数,但我不确定如何做到这一点.任何帮助,将不胜感激.
使用:
WITH hieararchy AS (
SELECT t.user_id
FROM YOUR_TABLE t
WHERE t.manager_id = 'Linda'
UNION ALL
SELECT t.user_id
FROM YOUR_TABLE t
JOIN hierarchy h ON h.user_id = t.manager_id)
SELECT x.*
FROM hierarchy x
Run Code Online (Sandbox Code Playgroud)
结果集:
user_id
--------
Mark
Kevin
John
Steve
Run Code Online (Sandbox Code Playgroud)
脚本:
CREATE TABLE [dbo].[YOUR_TABLE](
[user_id] [varchar](50) NOT NULL,
[manager_id] [varchar](50) NOT NULL
)
INSERT INTO YOUR_TABLE VALUES ('Linda','Jacob')
INSERT INTO YOUR_TABLE VALUES ('Mark','Linda')
INSERT INTO YOUR_TABLE VALUES ('Kevin','Linda')
INSERT INTO YOUR_TABLE VALUES ('Steve','Mark')
INSERT INTO YOUR_TABLE VALUES ('John','Kevin')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3356 次 |
| 最近记录: |