rank是MySQL关键字

19 篇文章 1 订阅
4 篇文章 0 订阅

MySQL有rank关键字,建议将rank替换为`rank` 。不是单引号 是键盘1左边的符号。

rank():返回的相关等级会跳跃;

dense_rank():返回的相关等级不会跳跃;

row_number():返回的是行信息,没有排名;

select employee_name,
       money,
       rank() over(order by money) `rank`,
       dense_rank() over(order by money) dense_rank,
       row_number() over(order by money) row_number
  from salary;


on:作用是作为生成临时表的条件 。

where:临时表生成后,作为筛选。

on是生成临时表时使用的条件,上面我们采用的是左外连接,左外连接是以左表为基础的,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。也就是说emp是左表,dept是右表,条件是emp的deptno与dept中的deptno相等且为40时才连接,但emp表中不存在deptno为40的记录,也就是右表没有符合条件的记录,而记录不足的地方均用NULL来补充。


而where是在临时表生成好后,再对临时表进行过滤。也就是说emp表与dept的连接条件只是emp的deptno与dept中的deptno相等,然后在对生成的临时表进行筛选,由于emp表中不存在deptno为40的记录,所以未找到符合条件的记录。

由于内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所有在内连接时on和where的结果是相同的。而左外、右外与全连接由于它的特殊性,on和where造成的差别大小取决于表达式和表中的数据。

.datediff
DATEDIFF() 函数返回两个日期之间的天数。

SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
DiffDate
1
SELECT DATEDIFF('2008-12-29','2008-12-30') AS DiffDate
DiffDate
-1
 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值