sql server多表查询

news/2024/7/23 22:06:26 标签: 数据库, sql

查询目标

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

nameusername
李明Li Ming
李华Li Hua

学生选课表:

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

想要达到的效果:

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

查询语句

sql">WITH TempTbl AS (
select 
	stu.username,
	COALESCE(
		STUFF((SELECT DISTINCT ','+stuSelect.CourseName
                    FROM stuSelect WHERE stuSelect.username = stu.username
                    FOR XML PATH('')), 
              1, 1, '')
        , '') AS right_data
	FROM  stu
	left JOIN  stuSelect
	ON 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_data
	 from TempTbl,stu
	where TempTbl.username=stu.username
) as tbl
--定义tbl,加上stu表中的学生姓名一列,加上一列row表示行数。
WHERE tbl.row BETWEEN 10 AND 30;
--如果需要分页,加上最后这一句

其中,注意的点有

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


http://www.niftyadmin.cn/n/5282788.html

相关文章

目标检测应用场景—数据集【NO.23】路面缺陷检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

【Linux】Linux虚拟文件系统VFS

文件系统负责存储和组织文件,以便可以方便地对文件进行查找和访问,我们要能优雅地访问磁盘上的数据就得用到文件系统。不同的文件系统有不同的文件存储和组织方式。 Linux从各种各样的文件系统中提取它们的共同部分,设计出一个抽象层&#x…

前端面试——JavaScript面经(持续更新)

一、数据类型 1. JavaScript用哪些数据类型、它们有什么区别? JavaScript共有八种数据类型,分别包括5种基本数据类型和3种非基本数据类型。 基本数据类型:Undefined、Null、Boolean、Number、String。非基本数据类型:Object、S…

微信小程序 文件下载、打开、转发

一.下载文件 wx.downloadFile({url: https://img.haihaina.cn/月度支出表.xls, filePath: wx.env.USER_DATA_PATH / 自定义名字.xlsx,success(res) {console.log(downloadFile,res)const filePath res.tempFilePathwx.openDocument({filePath: filePath,fileType: xlsx,succe…

微软官方镜像下载大全(windows iso 官方镜像)

原本只是想下一个Windows Server 2022中文版的镜像,后面发现要么就是慢得一批的某盘,要么就是磁力,我想直接下载简简单单,找了一圈没有找到。官网下载需要注册、登录乱七八糟,最终终于找到下载方法了,适用于…

react:useContent

useContent 用来简化代码 在 https://ant.design/components/button-cn 打开一个codeSanbox, 替换下面的代码保存 // import React from "react"; import React, { useContext, useState } from "react";// 创建一个名为 MyContext 的 Context…

Android Canvas画布saveLayer与对应restoreToCount,Kotlin

Android Canvas画布saveLayer与对应restoreToCount,Kotlin private fun mydraw() {val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.heigh…

屏幕颜色吸取器

前言 屏幕颜色吸取器。 前端工程师的福音,获取全屏幕上所有位置的颜色。 运行在window上的软件 屏幕颜色吸取器 前言1 下载解压2 使用 1 下载解压 下载地址:https://download.csdn.net/download/qq_44850489/11943229 下载下来之后解压 如下图&#…