sql - 在一列上获取子记录

标签 sql sql-server sql-server-2005

我有一个父表和一个子表:

Parent
ID   Name
1    Parent1
2    Parent2

Son
ID   ParentID
10      1
20      1
30      1
15      2
25      2

在选择父级时,将所有子级的 ID 放在一个列中的最简单方法是什么?像这样:

Result:
ID   Name      AllMySons
1    Parent1   10,20,30
2    Parent2   15, 25

我想构建一个函数来与儿子们一起生成字符串,但有人有更好的主意吗?

最佳答案

select P.ID,
       P.Name,
       stuff((select ','+cast(S.ID as varchar(10))
              from Son S
              where S.ParentID = P.ID
              for xml path('')), 1, 1, '') AllMySons
from Parent P

SE-Data

关于sql - 在一列上获取子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446424/

相关文章:

mysql - 优化排序查询

sql - 对 PostgreSQL update join 语句的澄清?

sql - Knex on constraint upsert 冲突

sql-server - SQL根据日期差异删除行

sql - 如何确保不在 SQL Server 2005 中插入非空重复值

c# - 如何从 .net 应用程序针对 sqlserver 运行 sql 并像使用 SQL Management Studio 一样获得输出?

sql - 使用 Partition by 的 SQL 中最高和第五高薪水之间的差异

sql - 在 SQL Server VARCHAR 列中插入尾随空格

C#、SQL Server 2008 : Stream large result set to end user only works on some databases

sql-server-2005 - 永久删除表时回收 SQL Server 2005 数据库中的空间