当前位置: 首页 > 面试题库 >

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

何承
2023-03-14
问题内容

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

谢谢。


问题答案:

假设您使用的是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

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



 类似资料:
  • 在SQL中,语句用于从数据库中的表中查询或检索数据。 返回存储在表中的数据,返回的结果称为结果集。 语法 这里,表达式是要从中选择数据的表的字段名称。使用以下语法选择表中可用的所有字段: 假设表有以下行记录 - EMP_ID EMP_NAME CITY PHONE_NO SALARY 1 Kristen Chicago 9737287378 150000 2 Russell Austin 9262

  • SELECT 语句用于从数据库中选取数据。 SQL SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中,称为结果集。 SQL SELECT 语法SELECT column_name,column_name FROM table_name; 与SELECT * FROM table_name; 演示数据库 在本教程中,我们将使用 RUNOOB 样本数据库。 下面

  • 在 T-SQL 中,SELECT 语句用于从数据库表中获取数据,并以结果的形式返回数据。这些表在 SELECT STATEMENT 中称为结果集。 Select语句的语法: 其中 column1、column2、column N 是要获取其值的表的字段。如果获取该表中所有可用的字段,那么需要使用给定的语法—— 例子: 考虑具有以下记录的 CUSTOMERS 表- 以下命令是一个示例,它将获取 CU

  • 通过 SQL,您可以从一个表复制信息到另一个表。 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。 SQL SELECT INTO 语句 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。 MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。 当然你可以使用以下语句来拷贝表结构

  • SELECT DISTINCT 语句用于返回唯一不同的值。 SQL SELECT DISTINCT 语句 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。 DISTINCT 关键词用于返回唯一不同的值。 SQL SELECT DISTINCT 语法SELECT DISTINCT column_name,column_name FROM table_name;

  • 问题内容: 您如何在一个日期稀疏的表与另一个日期详尽的表之间进行联接,以使稀疏日期之间的间隔取前一个稀疏日期的值? 说明性示例: 所需结果: 更新: 几个人提出了可以完成所需结果的相关子查询。(相关子查询=包含对外部查询的引用的子查询。) 这将起作用;但是,我应该注意到,我使用的平台是MySQL,其相关子查询的优化效果很差。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。