可以说我有下表

User_ID  Manager_ID
---------------------
Linda        Jacob
Mark         Linda
Kevin        Linda
Steve        Mark
John         Kevin

基本上,要求是将所有经理拉到您要搜索的user_id下。因此,例如,如果我发送“Linda”,则它应该返回我:
'Mark', 'Kevin', 'Steve', 'John'

或者,如果我发送“Mark”,那么它应该返回我:
Steve

我听说过递归函数,但不确定如何执行。任何帮助,将不胜感激。

最佳答案

用:

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

结果集:
user_id
--------
Mark
Kevin
John
Steve

脚本:
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')

关于sql递归函数-查找经理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3859882/

10-10 06:39