小编典典

SQL帮助:Select语句串联一对多关系

sql

例如,我有两个表。第一张表是学生,第二张表是学生所修的课程。如何使用选择语句,以便可以看到两列学生和课程,因此课程之间用逗号分隔。

谢谢。


阅读 164

收藏
2021-03-23

共1个答案

小编典典

假设您使用的是SQL Server 2005:

这应该做的是您要执行的操作-显然根据需要替换字段:

出于演示目的,请考虑以下两个表结构:

Students(
  STU_PKEY Int Identity(1,1) Constraint PK_Students_StuPKey Primary Key,
  STU_NAME nvarchar(64)
)

Courses(
  CRS_PKEY Int Identity(1, 1) Constraint PK_Courses_CrsPKey Primary Key,
  STU_KEY Int Constraint FK_Students_StuPKey Foreign Key References Students(STU_PKEY),
  CRS_NAME nvarchar(64)
)

现在,此查询应该可以完成您要做的工作:

Select  s.STU_PKEY, s.STU_NAME As Student,
        Stuff((
            Select  ',' + c.CRS_NAME
            From    Courses c
            Where   s.STU_PKEY = c.STU_KEY
            For     XML Path('')
        ), 1, 1, '') As Courses 
From    Students s
Group By s.STU_PKEY, s.STU_NAME

比目前接受的答案更简单…

2021-03-23