MySQL/SqlServer当某列值为多个ID组成,怎么获取对应的Name

MySQL:

UserId:"111";

HandleUserID:"111,222,333,444";

SELECT
                t1.*
                ,(SELECT GROUP_CONCAT(st1.UserName SEPARATOR ',') FROM Table_User st1 WHERE FIND_IN_SET(st1.UserId,t1.HandleUserID)) AS HandleUserNames
                FROM T_BDMS_Project  t1 

还可以使用CONCAT(str1,str2,…)与GROUP_CONCAT()连用返回连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

比如:GROUP_CONCAT(CONCAT(st1.UserId,',',st1.UserName) SEPARATOR '|') 

SqlServer:

UserId:"666";

HandleUserID:"666,888,222,444";

ApprovalUserID:"999,555,666,777";

SELECT  T1.*
               ,STUFF((SELECT ','+UserName FROM Table_User WHERE CHARINDEX(UserID,T1.HandleUserID)>0 FOR XML PATH('')),1,1,'') AS UserNames
               ,ISNULL(STUFF((SELECT ','+UserName FROM Table_User WHERE CHARINDEX(UserID,T1.ApprovalUserID)>0 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),'')  AS ApprovalUserNames
       FROM Table_Project T1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值