您好,欢迎访问一九零五行业门户网

悄悄分享6个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两件套:《sql基础知识第二版》和《sql高级知识第二版》的pdf电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:sql,就行数据前线——end——后台回复关键字:1024,获取一份精心整理的技术干货后台回复关键字:进群,带你进入高手如云的交流群。推荐阅读27岁发明sql以后,上帝把他带走了微信8.0不好玩?那可能是你打开方式不正确!一个员工的离职成本有多恐怖!sql养成这些好习惯是一笔财富mysql基本知识点梳理和查询优化
更多相关免费学习推荐:sqlserver
以上就是悄悄分享6个sql查询小技巧的详细内容。
其它类似信息

推荐信息