千家信息网

SQL查询的技巧

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍SQL查询的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、行列转换问题:假设有张学生成绩表(tb)如下:想变成(得到如下结果):代码:WITH tb(姓
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 互联网佳科技有限公司 互联网和科技创新 浩特互联网科技 互联网科技论文 南京欣网互联网科技 深圳齐家互联网科技 四个字互联网科技公司取名 汉立互联网科技有限公司联系电话 青岛中康互联网医疗科技有限公司 科技与互联网哪个更好 搜狐科技互联网 互联网媒体平台算高科技产业 洛阳昕诺飞互联网科技有限公司 用友工业互联网科技发展 烟台灵鸽互联网科技有限公司 中科明德北京互联网科技 滨湖区互联网智能科技产品有哪些 国大互联网教育科技有限公司薪资 从那以后互联网科技有限公司 吉林省码上互联网科技电话 互联网科技工作委员会主任 互联网科技保险 互联网科技有限公司经营范围 互联网与科技发展 上海挚品互联网科技 安徽鑫晟辉互联网科技 顺网科技2021年互联网排名 互联网实体化科技化 千方科技属于互联网企业吗 深圳艾果互联网通讯科技
0