22,301
社区成员




;with t(文件ID,发送人,接收人) AS
(
select 1,N'小明',N'小李' union all
select 1,N'小李',N'小强' union all
select 1,N'小李',N'小王' union all
select 1,N'小强',N'小二' union all
select 1,N'小王',N'萌萌'
),cte AS(
select * from t where t.发送人=N'小李'
union all
select t.* from t inner join cte on t.发送人=cte.接收人 and t.文件ID=cte.文件ID
)
select * from cte
/*
文件ID 发送人 接收人
1 小李 小强
1 小李 小王
1 小王 萌萌
1 小强 小二
*/
use Tempdb
go
--> --> 中国风(Roy)生成測試數據
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([文件ID] int,[发送人] nvarchar(22),[接收人] nvarchar(22))
Insert #T
select 1,N'小明',N'小李' union all
select 1,N'小李',N'小强' union all
select 1,N'小李',N'小王' union all
select 1,N'小强',N'小二' union all
select 1,N'小王',N'萌萌'
GO
;WITH CTET
AS
(
SELECT b.* FROM #T AS a INNER JOIN #T AS b ON a.文件ID=b.文件ID AND b.发送人 = a.接收人 WHERE a.接收人=N'小李'
UNION ALL
SELECT b.* FROM CTET AS a INNER JOIN #T AS b ON b.文件ID=a.文件ID AND b.发送人 = a.接收人
)
SELECT * FROM CTET
/*
文件ID 发送人 接收人
1 小李 小强
1 小李 小王
1 小王 萌萌
1 小强 小二
*/