SQL 将两个表中的多行数据合并为一行

标签 sql sql-server

我有来自成员(member)系统中两个表的数据如下:

Table: listuser
userid  listid
===========
1       5
1       8
1       3
2       5
2       3
3       4
4       4
5       3
6       4

Table: list
id  name
==============
3   Members
4   Non Members
5   Subscribers
8   Test

我想要达到的结果如下:

userid  lists
===================
1       Members, Subscribers, Test,
2       Members, Subscribers
3       Non Members,
4       Non Members,
5       Members,
6       Non Members,

用户可以属于 0 到 n 个列表。 我尝试了多种方法,但总是以多行 userid 结束,这是我试图消除的。如果需要一些帮助,我会非常高兴。

最佳答案

试试这个。对你有帮助

SELECT DISTINCT lu2.userid,(
SELECT ISNULL(l1.name, '') + ', '
FROM dbo.listuser lu1 JOIN dbo.list l1 ON lu1.listid = l1.id
WHERE lu1.userid = lu2.userid 
FOR XML PATH('')) AS name
FROM dbo.listuser lu2
ORDER BY lu2.userid

关于 SQL Fiddle 的示例

关于SQL 将两个表中的多行数据合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12997612/

相关文章:

java - JDBC Insert with Prepared Statement 说我有 SQL 语法错误

sql - SQL-选择在其他表格中至少出现一次的ID

MySql 尝试从另外两个表的列创建一个表

sql-server - sql server中时间戳列的实际用途是什么?

sql-server - 查询中的 SQL 查询

sql - 使用 BULK INSERT 映射列

sql - 需要查明 S​​QL Server 表中的所有列是否具有相同的值

sql - PostgreSQL 查询,LIKE 运算符

SQL Count 基于时间

sql - 使用 2 个版本的 SQL Server 的排序规则冲突