回答

收藏

sql父级子级递归在一个字段中选择

技术问答 技术问答 211 人阅读 | 0 人回复 | 2023-09-14

我不知道如何选择查询递归。5 @. r# i; s$ o% H6 r* m" K* e
    id     idparent    jobNO--------------------------------                                         3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              如何使用SqlServer取得这样的结果
- F* O  Y+ H' l6 t    id     idparent    jobNO   ListJob----------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
$ |6 v$ M2 V4 q4 ^" U. z; d) n    解决方案:                                                                5 \& j2 {9 d* W- r. }# r3 Z9 |2 s- j
                                                                您需要使用递归公共表达式。
- k( L5 H2 k0 e- s# e* s8 a网上有很多有用的文章。
8 M7 v) ~/ p! B- q有用的链接
. R! ~6 D8 }+ r简单谈谈:SQL Server CTE基础2 h0 h6 n- j# C$ s& o
blog.sqlauthority:递归CTE, F" r2 `$ u* K* \2 @- `; Y
这是你问题的解决方案:
* y6 ^" ~% K, [            CREATE TABLE #TEST    (            id int not null,       idparent int not null,       jobno int not null    )INSERT INTO #Test VALUES     (1、0、1)、  (2、1、2)、  (3、1、3)、  (4、0、4)、  (5、4、5)、  (6、5、6)WITH CTE AS (-- This is end of the recursion: Select items with no parent        SELECT id,idparent,jobno,CONVERT(VARCHAR(MAX),jobno) AS ListJob        FROM #Test        WHERE idParent = 0    UNION ALL-- This is the recursive part: It joins to CTE        SELECT t.id,t.idparent,t.jobno, c.ListJob   '/'   CONVERT(VARCHAR(MAX),t.jobno) AS ListJob        FROM #Test t        INNER JOIN CTE c ON t.idParent = c.id    )   SELECT * FROM CTE    ORDER BY id;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则