SQL查询的技巧
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍SQL查询的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、行列转换问题:假设有张学生成绩表(tb)如下:想变成(得到如下结果):代码:WITH tb(姓
千家信息网最后更新 2025年01月20日SQL查询的技巧
这篇文章主要介绍SQL查询的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1、行列转换
问题:假设有张学生成绩表(tb)如下:
想变成(得到如下结果):
代码:
WITH tb(姓名,课程,分数) AS(SELECT N'张三',N'语文',74UNION ALLSELECT N'张三',N'数学',83UNION ALLSELECT N'张三',N'物理',93UNION ALLSELECT N'李四',N'语文',79UNION ALLSELECT N'李四',N'数学',86UNION ALLSELECT N'李四',N'物理',88)SELECT 姓名 ,MAX(CASE 课程 WHEN '语文' THEN 分数 ELSE 0 END) 语文,MAX(CASE 课程 WHEN '数学' THEN 分数 ELSE 0 END) 数学,MAX(CASE 课程 WHEN '物理' THEN 分数 ELSE 0 END) 物理FROM tb GROUP BY 姓名
2、分页
方案一:利用NOT IN和SELECT TOP分页语句形式
SELECT TOP 10 * FROM TestTableWHERE ID NOT IN(SELECT TOP 20 ID FROM TestTable ORDER BY ID)ORDER BY ID
方案二:利用ID大于多少和SELECT TOP分页语句形式
SELECT TOP 10 * FROM TestTableWHERE ID > (SELECT MAX(id) FROM (SELECT TOP 20 id FROM TestTable ORDER BY id) AS T)ORDER BY ID
方案三:利用SQL Server中的特性ROW_NUMBER进行分页
SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS ROWID,* FROM TestTable) AS mytable where ROWID between 21 and 40
3、结果合并
合并重复行
SELECT * FROM AUNIONSELECT * FROM B
不合并重复行
SELECT * FROM AUNION ALLSELECT * FROM B
4、随机排序
SELECT * FROM TestTable ORDER BY NEWID()
还可以结合TOP取随机的前N条记录
SELECT TOP 100 * FROM TestTable ORDER BY NEWID()
5、以任意符号分隔取两边数据
例如我们以逗号(,)来分割数据,将如下数据
分割成如下图所示:
SELECT R,CASE WHEN CHARINDEX(',',R)>1 THEN LEFT(R,CHARINDEX(',',R)-1) ELSE NULL END AS R1 ,CASE WHEN CHARINDEX(',',R)>1 THEN RIGHT(R,(LEN(R) - CHARINDEX(',',R))) ELSE NULL END AS R2FROM t
代码较长,我们对代码进行拆分来理解:
SELECT CHARINDEX(',',',') --结果是1SELECT CHARINDEX(',','NULL') --结果是0SELECT CHARINDEX(',','') --结果是0SELECT CHARINDEX(',','A,B') --结果是2SELECT LEN('A,B') --结果是3SELECT LEN('A,B') - CHARINDEX(',','A,B') --结果是3-2=1SELECT RIGHT('A,B',( LEN('A,B') - CHARINDEX(',','A,B'))) --结果是 B
最后一步我们将'A,B'拆分出来了B,同理A我们也可以用类似的方法获取到。
6、WAITFOR延时执行
例 等待1 小时2 分零3 秒后才执行SELECT 语句
WAITFOR DELAY '01:02:03'SELECT * FROM Employee
其中 DELAY是在延时多长时间后才开始执行。
例 等到晚上11 点零8 分后才执行SELECT 语句
WAITFOR TIME '23:08:00'SELECT * FROM Employee
其中TIME是等到具体某个时刻才开始执行
以上是"SQL查询的技巧"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
结果
分数
数学
物理
语句
语文
课程
代码
姓名
数据
方案
张三
李四
技巧
查询
内容
形式
篇文章
价值
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
俄罗斯网络技术的发展
软件开发成功的条件
一台设备需要两个数据库怎么弄
源数据库6
网络技术论文答辩自述
超微服务器trt什么意思
学校网络安全与信息安全内容
网络安全大赛图标
asp服务器绿色版
go语言软件开发工具
腾讯云服务器多少流量怎么看
春考计算机网络技术试题
开拓者网络技术公司
防止服务器崩掉的东西
远程服务器搭建
虚拟主机好还是云服务器好
广西区块链网络安全
数据库中 是什么关系
数据库相关的法律法规
服务器如何做统一管理
可移动服务器
视频终端服务器
自建网站服务器安全吗
sql数据库主键怎么自动生成
代县国家网络安全宣传周
溧阳网络安全宣传
硬盘数据库清理
外卖预订系统数据库
软件开发能不能开普票
关于数据库视图删除数据库