leetcode数据库常用函数

排序函数

  1. rank() over: 排名相同的两名是并列,但是占用两个名词,1 1 3 4 4 6 这种.
  2. dense_rank() over : 排名相同的两名是并列的但是占用一个名次.
  3. row_number() over : 这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行排序.
select score,
(dense_rank() over (order by Score desc)) as 'rank' 
from Scores; 

Limit

  1. 此函数的limt(1,2) 代表从1 开始取出2行的数据.

连续等号相当于boolean表达式
如下两条语句是等值的

SELECT 
  * 
FROM
  student a,
  score b,
  score c 
WHERE a.`s_id` = b.`s_id`  = c.`s_id` ;
---------------------------------------------
SELECT 
  * 
FROM
  student a,
  score b,
  score c 
WHERE (a.`s_id` = b.`s_id` AND c.`s_id`=0) OR (a.`s_id` = b.`s_id` AND c.`s_id`=1) ;

=不能用来判断为null 值的数据

select  from A a left join B b on a.列名=b.列名  where b.id isnull;

左连接和右连接的使用区别

`左连接是取写在左边表的部分 右连接是取写在右边表的部分

聚合函数
聚合函数要使用的话,有一个前提,那就是是必须要有结果集。正如当初传智播客出的书中写到。
根据mysql的执行步骤,当程序执行到where的时候,mysql是没有结果集的,所以聚合函数不能用在where后面。
但聚合函数为什么就可以放在having后面呢?原因是使用having,前面一定要有分组,而分组的时候就已经有结果了,所以就有结果集,满足聚合函数前面一定要有结果集的要求。

case 函数

select
    (case
      # 当座位号是奇数并且不是不是最后一个座位号时
        when mod(id, 2) != 0 and counts!= id then id + 1
       # 当座位号是奇数并且是最后一个座位号时,座位号不变
        when mod(id, 2) != 0 and counts = id then id
       # 当座位号是偶数时
        else id - 1
    end) as id2,student
from seat,(select count(*) as counts from seat) as b
order by id asc;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值