千家信息网

有哪些SQL查询小技巧

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"有哪些SQL查询小技巧"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、行列转换问题
千家信息网最后更新 2026年11月01日有哪些SQL查询小技巧

本篇内容介绍了"有哪些SQL查询小技巧"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、行列转换

问题:假设有张学生成绩表(tb)如下:

想变成(得到如下结果):

代码:

WITH tb(姓名,课程,分数) AS ( SELECT N'张三',N'语文',74 UNION ALL SELECT N'张三',N'数学',83 UNION ALL SELECT N'张三',N'物理',93 UNION ALL SELECT N'李四',N'语文',79 UNION ALL SELECT N'李四',N'数学',86 UNION ALL SELECT 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 TestTable WHERE ID NOT IN (SELECT TOP 20 ID FROM TestTable ORDER BY ID) ORDER BY ID

方案二:利用ID大于多少和SELECT TOP分页语句形式

SELECT TOP 10 * FROM TestTable WHERE 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 A UNION SELECT * FROM B

不合并重复行

SELECT * FROM A UNION ALL SELECT * 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 R2 FROM  t

代码较长,我们对代码进行拆分来理解:

SELECT  CHARINDEX(',',',') --结果是1 SELECT  CHARINDEX(',','NULL') --结果是0 SELECT  CHARINDEX(',','') --结果是0 SELECT  CHARINDEX(',','A,B') --结果是2 SELECT  LEN('A,B') --结果是3 SELECT  LEN('A,B') - CHARINDEX(',','A,B') --结果是3-2=1 SELECT  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安全错误 数据库的锁怎样保障安全 耶加雪菲 广州紫鲸互联网科技有限公司 国智互联网科技 互联网科技有限公司经营范围 互联网科技会 互联网络科技有限公司 互联网科技有限公司 翻译 互联网科技创新企业排名 重庆威客帮互联网科技 重庆互联网医院沙龙医盟信息科技 荆州市昕露互联网络科技有限公司 广州新华互联网科技学校电竞方面 科技互联网的核心竞争力 2021互联网科技公司排名 互联网第三次科技革命特征 广州千川互联网科技有限公司 广州富喜互联网络科技 本届互联网大会上的黑科技 广西科技产业互联网是什么 利用互联网等科技手段 百单网互联网科技有限公司 华宇互联网科技 未来的互联网科技 互联网 科技服务平台 互联网科技和信息 银川新华互联网科技学校联系电话 群盈汇互联网科技有限公司 广州百诚互联网科技有限公司官网 求路客互联网科技电话 山东蛋芒互联网科技有限公司
0