共计 1850 个字符,预计需要花费 5 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章主要介绍 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 查询的技巧”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!
向 AI 问一下细节
正文完