(三)MySQL学习笔记
【Leecode】175. 组合两个表
解答:由于是组合两个表的信息,很容易想到连接查询,这里使用左连接
select p.Firstname,p.Lastname,q.City,q.State from Person as p left join Address as q on p.PersonId=q.PersonId;
【Leecode】176. 第二高的薪水
解答:
第一种解法: 我们很容易知道第一高的薪水(max函数),所以,除去第一高的薪水再找最高的薪水,就是第二高的薪水了
select max(Salary) as SecondHighestSalary from Employee where Salary not in (select max(Salary) from Employee);
第二种解法:按薪水从高到低排序,再找第二条数据就是第二高薪水了。limit 1表示读取一行数据, offset 1 表示从表的第二行开始读取
select Salary as SecondHighestSalary from Employee order by Salary desc limit 1 offset 1;
【Leecode】181. 超过经理收入的员工
解答:
这里涉及到同一个表中的字段值的比较,所以可以为这张表建两个别名(当作两张表)。
第一种解法:直接找出员工的薪水和对应的经理的薪水,进行比较
select e1.Name as Employee from Employee as e1 where e1.Salary>(select e2.Salary from Employee as e2 where e1.ManagerId=e2.Id)
第二种解法:使用join连接查询,相当于把表划分为员工表和经理表,再对各自的薪水进行比较
select e1.Name as Employee from Employee as e1 join Employee as e2 where e1.ManagerId=e2.Id and e1.Salary>e2.Salary
【Leecode】182. 查找重复的电子邮箱
解答:首先想到应该就是根据 Email 分组,再计算每个分组的行数是否大于1.
select Email from Person group by Email having count(Email)>1
【Leecode】183. 从不订购的客户
解答:
第一种解法:直接查找用户表的Id不在订单表中出现过的用户即可
select Name as Customers from Customers where Id not in (select CustomerId from Orders)
第二种解法:左连接查找。以用户表为基准,连接订单表,查找CustomerId为空的数据
select c.Name as Customers from Customers as c left join Orders as o on o.CustomersId=c.Id and o.CustomerId is null
【Leecode】196. 删除重复的电子邮箱
解答:这里涉及到同一个表中的字段值 Id 的比较,所以可以为这张表建两个别名(当作两张表)。
delete p1 from Person as p1, Person as p2 where (p1.Email=p2.Email) and (p1.Id>p2.Id)
【Leecode】197. 上升的温度
解答:涉及到同一张表中的字段值比较,所以可以为这张表建两个别名(当作两张表),这里关键是判断日期的连续性
第一种解法:DATEDIFF函数来判断日期
select w1.Id from Weather as w1, Weather as w2 where (w1.Temperature>w2.Temperature) and DATEDIFF(w1.RecordDate, w2.RecordDate)=1;
第二种解法:TO_DATE函数来判断日期
select w1.Id from Weather as w1, Weather as w2 where w1.Temperature>w2.Temperature and TO_DAYS(w1.RecordDate)=TO_DAYS(w2.RecordDate)+1;
第三种解法:SUBDATE函数来判断日期
select w1.Id from Weather as w1, Weather as w2 where w1.Temperature>w2.Temperature and SUBDATE(w1.RecordDate,1)=w2.RecordDate;
【Leecode】595. 大的国家
解答:这里使用 or 即可
select name, population, area from World where (area>3000000) or (population>25000000)
【Leecode】596. 超过5名学生的课
解答:对 class 分组,计算分组的数据是否大于等于5即可,还要使用 distinct 去重
select class from courses group by class having count(distinct student)>=5
【Leecode】620. 有趣的电影
解答:这里关键是找出奇数 Id,可以巧妙使用 & 运算,奇数&1为1(True),偶数&1为0(False)
select * from cinema where description!='boring' and id&1 order by rating desc;
【Leecode】627. 交换工资
解答:可以使用 if 语句来做判断
update salary set sex=if(sex='f', 'm', 'f')
(三)MySQL学习笔记的更多相关文章
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- MySql学习笔记三
MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- MySQL学习笔记-锁相关话题
在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因. Mysql常用存储引擎的锁 ...
- MySQL学习笔记-大纲
软件程序性能测试在之前<品味性能之道>系列中已经大量提到,讲解了很多测试方法.测试观念.测试思想等等.最近准备深入MySQL进行学习并总结.分别查阅<MySQL性能调优与架构设计&g ...
- 【mysql学习笔记整理】
/*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...
随机推荐
- 【BZOJ2754】[SCOI2012]喵星球上的点名
[BZOJ2754][SCOI2012]喵星球上的点名 题面 bzoj 洛谷 题解 这题有各种神仙做法啊,什么暴力\(AC\)自动机.\(SAM\)等等五花八门 我这个蒟蒻在这里提供一种复杂度正确且常 ...
- springboot 中controller 返回html界面或 jsp界面
参考链接:https://blog.csdn.net/qq_15260315/article/details/80907056 经尝试,返回html界面没问题,但是返回jsp界面是有问题的,just ...
- 不会Python开发的运维终将被淘汰?
Python语言是一种面向对象.直译式计算机程序设计语言,由Guido van Rossum于1989年底发明.Python语法简捷而清晰,具有丰富和强大的类库,具有可扩展性和可嵌入性,是现代比较流行 ...
- javaweb(三十一)——国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- 纯CSS3实现旋转木马
test.html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- 【Jmeter测试】如何使用BeanShell断言判断请求返回的Json相应结果
脚本结构上图中,queryMaterialApiDTOListByPkIds是返回Json格式响应结果的请求,然后添加BeanShell断言详细判断Json结果中的值是否正确. Json格式的相 ...
- WebGL射线拾取模型——八叉树优化
经过前面2篇WebGL射线拾取模型的文章,相信大家对射线和模型面片相交的原理已经有所了解,那么今天我们再深入探究关于射线拾取的一个问题,那就是遍历场景中的所有与射线相交的模型的优化问题.首先我们来复习 ...
- 3星|《CMO到底能干多久?》:CEO必须决定供公司需要哪类CMO
CMO到底能干多久?(<哈佛商业评论>增刊) <哈佛商业评论>关于CMO的6篇文章.我认为第一篇<为何CMO宝座坐不长>写的最好,是典型的哈评风格:做过实际调查.有 ...
- [寒假学习笔记](二)Python初学
Python 学习 python的自学从几个月前断断续续地进行,想好好利用这个寒假,好好地学一学. 回顾 已学习:基本操作.函数 已有C++的一定基础,只要注意python中比较特殊的部分就行 进入正 ...
- AndroidArchitecture
title: AndroidArchitecture date: 2016-04-08 23:26:20 tags: [architecture] categories: [Mobile,Androi ...