如何使用内部联接连接SQLServer2008中的所有行?

xoshrz7s  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(325)

以下是两张表:
用户

row_id  user_id
1       1
1       2
1       3
2       1

用户名

user_id    username
1          foo
2          bar
3          test

如何按行id分组、连接两个表以及连接用户名?例如:
查询应返回

row_id     username
1          foo, bar, test
2          foo
l7mqbcuq

l7mqbcuq1#

在sql server 2008中,您需要使用xml黑客:

select r.row_id,
       stuff( (select ', ' + un.username
               from users u join
                    usernames un
                    on u.user_id = un.user_id
               where u.row_id = r.row_id
               for xml path ('')
              ), 1, 2, ''
            ) as names
from (select distinct row_id from users) r;

最新版本的sql server支持 string_agg() 使这种方法成为多余的。

相关问题