几个SQL查询小技巧
点击关注公众号,SQL干货及时获取
后台回复:1024,获取海量学习资源问题:假设有张学生成绩表(tb)如下:
(资料图片)
想变成(得到如下结果):
代码:
WITH tb(姓名,课程,分数) AS(SELECTN"张三",N"语文",74UNIONALLSELECTN"张三",N"数学",83UNIONALLSELECTN"张三",N"物理",93UNIONALLSELECTN"李四",N"语文",79UNIONALLSELECTN"李四",N"数学",86UNIONALLSELECTN"李四",N"物理",88)SELECT姓名 ,MAX(CASE课程 WHEN"语文"THEN分数 ELSE0END) 语文,MAX(CASE课程 WHEN"数学"THEN分数 ELSE0END) 数学,MAX(CASE课程 WHEN"物理"THEN分数 ELSE0END) 物理FROMtb GROUPBY姓名
2、分页
方案一:利用NOT IN和SELECT TOP分页语句形式
SELECTTOP 10* FROMTestTableWHEREIDNOTIN(SELECTTOP 20IDFROMTestTable ORDERBYID)ORDERBYID
方案二:利用ID大于多少和SELECT TOP分页语句形式
SELECTTOP 10* FROMTestTableWHEREID> (SELECTMAX(id) FROM(SELECTTOP 20idFROMTestTable ORDERBYid) AST)ORDERBYID
方案三:利用SQL Server中的特性ROW_NUMBER进行分页
SELECT* FROM(SELECTROW_NUMBER() OVER(ORDERBYIDDESC) ASROWID,*FROMTestTable) ASmytable whereROWIDbetween21and40
3、结果合并
合并重复行
SELECT* FROMAUNIONSELECT* FROMB
不合并重复行
SELECT* FROMAUNIONALLSELECT* FROMB
4、随机排序
SELECT* FROMTestTable ORDERBYNEWID()
还可以结合TOP取随机的前N条记录
SELECTTOP 100* FROMTestTable ORDERBYNEWID()
5、以任意符号分隔取两边数据
例如我们以逗号(,)来分割数据,将如下数据
分割成如下图所示:
SELECTR,CASEWHENCHARINDEX(",",R)>1THENLEFT(R,CHARINDEX(",",R)-1) ELSENULLENDASR1 ,CASEWHENCHARINDEX(",",R)>1THENRIGHT(R,(LEN(R) - CHARINDEX(",",R))) ELSENULLENDASR2FROMt
代码较长,我们对代码进行拆分来理解:
SELECTCHARINDEX(",",",") --结果是1SELECTCHARINDEX(",","NULL") --结果是0SELECTCHARINDEX(",","") --结果是0SELECTCHARINDEX(",","A,B") --结果是2SELECTLEN("A,B") --结果是3SELECTLEN("A,B") - CHARINDEX(",","A,B") --结果是3-2=1SELECTRIGHT("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* FROMEmployee
其中 DELAY是在延时多长时间后才开始执行。
例等到晚上11点零8分后才执行SELECT语句
WAITFOR TIME "23:08:00"SELECT* FROMEmployee
其中TIME是等到具体某个时刻才开始执行
我是岳哥,最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
数据前线——End——后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群。
推荐阅读SQL 中为什么经常要加NOLOCK?SQL 语句中 where 条件后 写上1=1 是什么意思干掉visio,这个画图神器真的绝了!!!SQL中的高级日期函数SQL常用脚本整理
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...