sql重点语法

in和exists的区别

in保留子查询结果,先子查询,再主查询

exists不保留子查询结果,先外查询,再用主查询的结果集去进行子查询过滤处理。

in子查询的特殊性

子查询当查询字段在内部不存在时,会使用外部的字段。这个时候类似于exists查询。

外部查询从第一个记录开始放入子查询中使用。

mysql与sqlserver的差异

简洁 详细

mysql计算年龄等时间

格式化时间

计算时间最好先通过格式化方法,将时间格式化之后就可以进行+-计算。

sql排名

sql排名

简洁版sql排名

OVER(PARTITION BY... ORDER BY...)的使用说明和意义

1、ROW_NUMBER

定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询

select ROW_NUMBER() OVER(order by [SubTime] desc) as row_num,* from [Order]

1、2、3、4,不保留重复

2、RANK

  rank函数用于返回结果集的分区内每行的排名, 行的排名是相关行之前的排名数加一。简单来说rank函数就是对查询出来的记录进行排名,与row_number函数不同的是,rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个

1、1、3、4,跳过排名,保留重复

3、DENSE_RANK

  dense_rank函数的功能与rank函数类似,dense_rank函数在生成序号时是连续的,而rank函数生成的序号有可能不连续。dense_rank函数出现相同排名时,将不跳过相同排名号,rank值紧接上一次的rank值。

1、1、2、3,不跳过排名,保留重复

4.NTILE()

sql tile分组 先总记录数/总区数,平均分配给每个区。然后再总记录数%总区数,从第一个区开始给每个区分配1条记录,直到分完余数。

定义:NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的’分区’一样 ,分为几个区,一个区会有多少个。

将结构集分区安排,ntilt(3)分三个区。是分区不是排序!

1,位于1号区

1,位于1号区

2,位于2号区

3,位于3号区

case

只作用于已查询的记录的字段操作,

case后是字段名,其他是字段值

最后是END。

语法:

CASE name

WHEN 'a' THEN 'A'

[WHEN 'b' THEN 'B']

[ELSE 'C'] END
说明:

if name==a,则name=A

if name==b,则name=B

else name=C。

case的两种用法

简单Case函数

CASE sex

WHEN '1' THEN '男'

WHEN '2' THEN '女'

ELSE '其他' END

--Case搜索函数 

CASE WHEN sex = '1' THEN '男' 

WHEN sex = '2' THEN '女' 

ELSE '其他' END  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值