sql server中的成语接龙
WITH cte_a
AS ( SELECT chengyu ,
firstword ,
lastword ,
0 AS level ,
CAST(chengyu AS NVARCHAR(MAX)) AS path
FROM [好人好事].[dbo].[chengyu_new]
WHERE chengyu = '山盟海誓'
UNION ALL
SELECT s.chengyu ,
s.firstword ,
s.lastword ,
p.level + 1 ,
CAST(p.path + '->' + s.chengyu AS NVARCHAR(MAX)) AS path
FROM [好人好事].[dbo].[chengyu_new] AS s
INNER JOIN cte_a AS p ON p.lastword = s.firstword
WHERE CHARINDEX(s.chengyu, p.path) = 0
)
SELECT *
FROM cte_a
WHERE cte_a.level = 1000
OPTION ( MAXRECURSION 1000 );