当前位置: 首页 > news >正文

sql server多表查询

查询目标

现在有学生表和学生选课信息表,stu和stuSelect,stu中包含学生用户名、名字,stuSelect表中包含学生用户名,所选课程名
学生表:

nameusername
李明Li Ming
李华Li Hua

学生选课表:

usernameCourseName
Li Ming操作系统
Li Hua操作系统
Li Ming数据结构
Li Hua计算机网络

想要达到的效果:

usernameCourseNamename
Li Ming操作系统,数据结构李明
Li Hua操作系统,计算机网络李华

查询语句

WITH TempTbl AS (
select stu.username,COALESCE(STUFF((SELECT DISTINCT ','+stuSelect.CourseNameFROM stuSelect WHERE stuSelect.username = stu.usernameFOR XML PATH('')), 1, 1, ''), '') AS right_dataFROM  stuleft JOIN  stuSelectON stuSelect.username = stu.username --如果有where的条件加在这GROUP BY stu.username
)
--定义一个TempTbl 表,查询出stu中所有学生和对应的所有选课。
SELECT * from(select ROW_NUMBER() OVER (ORDER BY RegisDate desc) as row,stu.username,stu.name,TempTbl.right_datafrom TempTbl,stuwhere TempTbl.username=stu.username
) as tbl
--定义tbl,加上stu表中的学生姓名一列,加上一列row表示行数。
WHERE tbl.row BETWEEN 10 AND 30;
--如果需要分页,加上最后这一句

其中,注意的点有

select ',' + stuSelect.CourseName from stuSelect FOR XML PATH('');
--是把查询出来的stuSelect.CourseName之前全部加上',',STUFF函数是去掉第一个逗号。
--COALESCE函数是表示coalesce(success_cnt, ''),如果success_cnt结果为空,返回''。
http://www.lryc.cn/news/266488.html

相关文章:

  • 如何利用PPT绘图并导出清晰图片
  • 1.倒排索引 2.逻辑斯提回归算法
  • Kafka消费者组
  • 四. 基于环视Camera的BEV感知算法-BEVDepth
  • CentOS系统环境搭建(二十五)——使用docker compose安装mysql
  • 协作机器人(Collaborative-Robot)安全碰撞的速度与接触力
  • 第11章 GUI Page400~402 步骤二 画直线
  • 华为gre隧道全部跑静态路由
  • 【c++】入门1
  • Python之Django项目的功能配置
  • P4 音频知识点——PCM音频原始数据
  • 解决Electron中WebView加载部分HTTPS页面白屏的方法
  • 【Java中创建对象的方式有哪些?】
  • npm使用详解(好吧好吧是粗解)
  • uniapp自定义头部导航怎么实现?
  • 什么是 Dubbo?它有哪些核心功能?
  • (2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成
  • python pip安装依赖的常用软件源
  • 避免大M取值过大引起的数值问题
  • 史密斯圆图的使用
  • 可重复读解决了哪些问题? 对 SQL 慢查询会考虑哪些优化 ?
  • 从0开始python学习-35.allure报告企业定制
  • 蓝桥杯2020年10月青少组Python程序设计省赛真题
  • 【数据结构】布隆过滤器原理详解及其代码实现
  • Qt中实现短信验证码功能
  • Redis-运维
  • Qt制作定时关机小程序
  • LeetCode day30
  • 数据分析基础之《numpy(5)—合并与分割》
  • centos 安装 Miniconda