如何通过递归查询获得所需的 table

How to get desired table with recursive Query

我有这些 tables。 table 1 的第 2 列中的项目也可能与其他项目相关,它们的关系在 table 2.

 t1  Code_A|Code_B   t2   Code_B|Code_C
     ------+------        ------+------
     788   |   501        501   |   503
     788   |   510        503   |   507
     ...   |   ...        501   |   504

如何在 sql 服务器中使用递归查询得到 table 1 作为这个结果。

result  Code_A|Code_B  
        ------+------       
        788   |   501      
        788   |   503        
        788   |   507
        788   |   504

已编辑

尝试 Recursive CTE :

DECLARE @t1 TABLE (Code_A INT, Code_B INT)
DECLARE @t2 TABLE (Code_B INT, Code_C INT)


INSERT @t1 VALUES (788, 501), (788, 510)
INSERT @t2 VALUES (501, 503), (503, 507)


;WITH cte(code_A, code_B)
AS (
    SELECT t1.code_A, t1.code_B
    FROM @t1 t1
    LEFT JOIN @t2 t2 ON t2.Code_B = t1.Code_B
    UNION ALL
    SELECT c.code_A, t2.code_C
    FROM cte c
    INNER JOIN @t2 t2 ON t2.Code_B = c.code_B
)
SELECT DISTINCT * FROM cte

结果:

code_A      code_B
----------- -----------
788         510
788         501
788         503
788         507