有以下三张表:

学生表  t1

Stu_id

Stu_name

1

张三

2

李四

3

王五

课程表  t2

Co_id

Co_name

1

Java

2

C#

3

C

4

C++

5

Javascript

关系表  t3

Stu_id

Co_id

1

1

1

4

2

1

2

3

2

5

 

题目要求出现的结果是:张三 java,c++

答案:

select distinct stu_name,

stuff((select ','+co_name from t3,t2 where a.stu_id=stu_id and t3.co_id=t2.co_id for xml path('')),1,1,'') from t3 a,t1 b where a.stu_id=b.stu_id

 

解析:

1.stuff(str1,start,length,str2)比较简单,是一个可以设置起始位置的替换字符串函数。
str1是原始字符串。
start是要替换的起始位置。
length是要替换原始字符串内容的长度。
str2是替换的新内容。
例子:stuff('12345',2,2,'000') 的结果为'100045',既'12345'的第二位'2'开始,长度为二,既'23',替换为'000',得到结果'100045'。当然也有其他的简单方法可以做到同样效果

2.for xml path则复杂一些,是将查询到的结果生成XML数据

 

 

相关文章:

  • 2021-12-08
  • 2021-06-12
  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-03
  • 2021-11-03
  • 2022-12-23
猜你喜欢
  • 2021-06-29
  • 2022-02-10
  • 2021-11-15
  • 2021-12-03
  • 2022-12-23
  • 2021-11-22
相关资源
相似解决方案