博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql日常小练习-20171012
阅读量:6947 次
发布时间:2019-06-27

本文共 2359 字,大约阅读时间需要 7 分钟。

hot3.png

1.现有表情况如下:

Create table If Not Exists Employee (Id int, Salary int);Truncate table Employee;insert into Employee (Id, Salary) values ('1', '100');insert into Employee (Id, Salary) values ('2', '200');insert into Employee (Id, Salary) values ('3', '300');

171513_0JRc_2263272.png

 要查出如下的结果:

171541_2LEH_2263272.png

如果没有第二高的Salary将返回null

171638_zowd_2263272.png     171654_YCut_2263272.png

2.答案

 

SELECT	max(Salary) AS SecondHighestSalaryFROM	EmployeeWHERE	Salary < (SELECT max(Salary) FROM Employee)
SELECT DISTINCT	(Salary) as SecondHighestSalaryFROM	EmployeeUNION	SELECT		NULL	ORDER BY		SecondHighestSalary DESC	LIMIT 1,	1
SELECT	IFNULL(		(			SELECT DISTINCT				Salary			FROM				Employee			ORDER BY				Salary DESC			LIMIT 1 OFFSET 1		),		NULL	) AS SecondHighestSalary

其中 DISTINCT 表示去重

DISTINCT :去重union 表示联合查询,去重union all 表示联合查询,不去重,会包含重复的数据desc代表降序asc代表升序limit m,n 其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条。limit 1,1 代表取出第2条数据,共一条数据select * from Employee limit 2,2即取出第3条至第4条,2条记录如果没有2条,存在多少条即返回多少条

nullif,isnull,ifnull 的用法   

IFNULL(expr1,expr2)如果expr1不为null,则ifnull()的返回值为expr1,否则为expr2;其返回值为字符串或数字mysql> select ifnull("hello","world");+-------------------------+| ifnull("hello","world") |+-------------------------+| hello                   |+-------------------------+1 row in set (0.00 sec)mysql> select ifnull(null,"hello");+----------------------+| ifnull(null,"hello") |+----------------------+| hello                |+----------------------+1 row in set (0.01 sec)mysql> select ifnull(1/0,"world");+---------------------+| ifnull(1/0,"world") |+---------------------+| world               |+---------------------+1 row in set (0.00 sec)

  

isnull(expr) 的用法:如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。 mysql> select isnull(null);+--------------+| isnull(null) |+--------------+|            1 |+--------------+1 row in set (0.01 sec)mysql> select isnull(1);+-----------+| isnull(1) |+-----------+|         0 |+-----------+1 row in set (0.00 sec)使用= 的null 值对比通常是错误的。

 

NULLIF(expr1,expr2)  的用法:  如果expr1 = expr2  成立,那么返回值为NULL,否则返回值为   expr1。这和CASE   WHEN   expr1   =   expr2   THEN   NULL   ELSE   expr1   END相同。     mysql> select nullif(1,1);+-------------+| nullif(1,1) |+-------------+|        NULL |+-------------+1 row in set (0.01 sec)mysql> select nullif(1,2);+-------------+| nullif(1,2) |+-------------+|           1 |+-------------+1 row in set (0.01 sec)mysql>如果参数不相等,则   MySQL   两次求得的值为     expr1   。

 

转载于:https://my.oschina.net/u/2263272/blog/1549811

你可能感兴趣的文章
C语言,能开发什么?怎么去学习?
查看>>
11 SVM - SMO - 序列最小优化算法
查看>>
Android 拍照或相册剪裁后取头像
查看>>
Linux命令参数详细解析-ping
查看>>
数据科学家成抢手人才
查看>>
浅谈视频监控 在智慧城市建设中的综合治理业务
查看>>
思科HyperFlex系统提供最完整的新一代超融合解决方案
查看>>
中国电信明确物联网技术路标:7月启动Cat1
查看>>
市场需求持续增长,云计算或将成为资本市场下一个焦点
查看>>
《 FreeSWITCH权威指南》——3.6 小结
查看>>
JMeter的基本介绍和入门(1)
查看>>
网络电话让毕业季不再有“情感真空”
查看>>
疑似微信企业版曝光 网友留言称“心疼阿里”
查看>>
高通每天提供超过一百万颗芯片 助力物联网发展
查看>>
Python Selenium的js扩展实现
查看>>
全球最大规模窄带物联网智慧水务商用项目在福州启动
查看>>
iDTRONIC推出RFID平板和手持移动设备
查看>>
圆通速递率先推出隐形面单 为个人信息安全再添安全锁
查看>>
当200亿个物联网设备同时产生数据 是时候重新认识传感器了
查看>>
深度专访:深谈的故事 (LinuxDeepin)
查看>>