SQL查询的技巧
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍SQL查询的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、行列转换问题:假设有张学生成绩表(tb)如下:想变成(得到如下结果):代码:WITH tb(姓
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
太原东杰软件开发有限公司
关于新冠病毒的数据库
金融软件开发失败案例
美食通食通天数据库安装
武汉东湖网络安全
从严治警网络安全宣传周
常熟市微派网络技术有限公司
强化法治监管筑牢网络安全
私接服务器一般是干嘛
深圳服务器回收
辽宁潮流软件开发过程品质保障
纸牌app软件开发
盗贼之海微软连不到服务器
山西多功能软件开发厂家报价
数据库中超码的概念
沈阳奇搜网络技术有限公司
凯思特网络技术
网络安全影响国家安全事件
服务器运维资质
科技互联网络反垄断法征求意见
网络安全防范建议
jstage 数据库
智唐科技是互联网公司吗
青浦区项目数据库服务收费标准
安徽潮流软件开发设施
网络安全技术以攻学防
sql服务器空白
服务器可以带多少台终端
直播流媒体服务器搭建
超大型软件开发