最全SQL使用(一):如何使用SQL语句去查询第二高的值(1),我把所有软件测试第三方库整理成了PDF

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取


select Salary as SecondHighestSalary
from Employee
order by Salary desc
limit 1,1;
#若是有相同的值,只输出一个,所以加上distinct
select distinct Salary as SecondHighestSalary
from Employee
order by Salary desc
limit 1,1;

然后去执行语句的时候,发现与预期结果相同,心里窃喜,这就算出来了。。。


输入:
 {"headers": {"Employee": ["Id", "Salary"]}, "rows": {"Employee": [[1, 100], [2, 200], [3, 300]]}}
 输出:
 {"headers": ["Salary"], "values": [[200]]}
预期结果:
 {"headers": ["SecondHighestSalary"], "values": [[200]]}

随着去提交代码之后,返回的结果却是 解答错误,满头的黑人问号脸,哪里错了?怎么错了的?

查看错误详情:


 输入:
{"headers": {"Employee": ["Id", "Salary"]}, "rows": {"Employee": [[1, 100]]}}
输出:
{"headers": ["SecondHighestSalary"], "values": []}
预期:
{"headers":["SecondHighestSalary"],"values":[[null]]}

恍然大悟,原来是没有考虑”如果不存在第二高的薪水,那么查询应返回 null“这个情况,找到问题就好办了,这也是我们在代码中写sql时常没有考虑到异常情况。

如果查询不到数据,应该返回什么值,需不需对这种情况进行封装的考虑,这道题里已经要求了,若是没有查询到就输出null,所以再次修改了我的sql:

select ifnull(
                   (select Salary from Employee order by Salary desc limit 1,1), null) as SecondHighestSalary;

结果:顺利通过在这里插入图片描述
这道题主要考察的知识点就是LIMIT的使用和对NULL的处理,之前写过一篇与LIMIT有关的文章,LIMIT在实际使用过程使用情况非常普遍。

知识点总结:

LIMIT

LIMIT 一般都是放在SQL语句的最后,是对展示的结果做一个限制输出,比如查询了十条记录,但只展示一条,那就可以在SQL语句后面加一个LIMIT 1。

LIMIT 语法:


SELECT column_list
FROM table1
ORDER BY column_list
LIMIT row_count OFFSET offset_count;
# row_count 表示 返回的记录数
# offset为偏移量,表示从哪条数据开始返回,使用过程中也可以省略

举例:

1、查询出雇员表中的5条记录

select * from Employee limit 5;

2、查询出雇员表第二条数据后的5条记录(不包括第二条数据)

#不显示最前面二条数据,从第三条数据开始展示
select * from Employee 5 offset 2;
==
select * from Employee 2,5;-->这是我最喜欢使用的写法

IFNULL()

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
菜鸟教程

IFNULL()语法:

IFNULL(expression, alt_value)

举例:

select ifnull("111","展示我" );

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

//bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值