回答

收藏

要连接的Sum字符串等效项

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

我想从左表中查询Id在1行上输出联接表中的描述ID。* d" [" U9 e2 P
架构:
5 C6 Z& U7 M1 M& e4 \, J# \person---------    id (int)role-------------id (int)description (varchar(100))personrole-------------personid (int)roleid (int)示例数据:
/ o0 R/ b& n1 X' d% }6 u$ d; ~6 aperson------------id12role------------id   description1    user2    admininstrator3    testerpersonrole-------------personid   roleid                             22222          3333                                                             32222                                               122                                             12122                                               12222212                         12222222222222                                                                                                                                                                                                                                                              1222222222222                         因此,我希望输出是:4 a7 ~' j0 `  x& D  i# X$ X# p6 f
PersonId   Roles1          user2                       user;administrator;tester                . ]/ L9 B9 g' R: f9 ~/ ]
    解决方案:                                                               
9 L- U, \: Z+ m! F                                                                SELECT
# E. I. \$ }, `( ], f2 a% v" N9 P' a                                    p.ID PersonID,
$ r! x4 x" L- P' c3 a                                    STUFF(
! G! W: x9 ?1 y" m& ?4 M! a9 E2 W                                                    (SELECT ‘;’   b.description* [1 ?6 t$ ~! m( w& O
                                                        FROM  personrole a
' m& m9 h4 r2 J& M3 X7 l, r1 {8 v                                                                                INNER JOIN role b8 W; q1 c7 F# w' J9 p: |, T
                                                                                        ON a.roleid = b.id6 n2 |4 l; K1 n7 N6 x5 M2 _5 m
                                                        WHERE a.personid = p.id
, S# m$ v9 p6 O  I7 W! B                                                        FOR XML PATH (‘’))
2 R8 Y9 G* p! r& E( B( C* G                                                        ‘’)  AS DescriptionList( j7 y; q* f# W: M
                FROM person AS p
* ~# h0 \( y" Q& j                GROUP BY p.ID  v) ^2 o/ J* i" B1 C6 S0 h
SQLFiddle演示输出
5 C* X: ~) E) p5 k% K+ G. k$ |' m╔══════════╦════════════════════════════╗║ PERSONID ║      DESCRIPTIONLIST       ║╠══════════╬════════════════════════════╣║     ║ user                       ║║     ║ user;admininstrator;tester ║╚══════════╩════════════════════════════╝
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则