【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学习笔记的更多相关文章

  1. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  2. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  3. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  4. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  5. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  6. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  7. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  8. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  9. MySQL学习笔记-大纲

    软件程序性能测试在之前<品味性能之道>系列中已经大量提到,讲解了很多测试方法.测试观念.测试思想等等.最近准备深入MySQL进行学习并总结.分别查阅<MySQL性能调优与架构设计&g ...

  10. 【mysql学习笔记整理】

    /*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...

随机推荐

  1. 后缀数组(SA)总结

    后缀数组(SA)总结 这个东西鸽了好久了,今天补一下 概念 后缀数组\(SA\)是什么东西? 它是记录一个字符串每个后缀的字典序的数组 \(sa[i]\):表示排名为\(i\)的后缀是哪一个. \(r ...

  2. cogs87 乘积最大

    cogs87 乘积最大 原题链接 题解 竟然不用高精... f[i][j]表示前i位数j个乘号的最大数f[i][j]=max{f[i-l][j-1]*num[i-l+1][i]} num[a][b]表 ...

  3. phpcms 的模板更换

    刚安装完成后的phpcms ,自带的默认模板样式一般,可以自己换模板 首先打开phpcms文件夹,按照下图路径打开 default是存模板的文件夹 在里面新建一个文件夹 在default中主要用到的是 ...

  4. javaweb(二十九)——EL表达式

    一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...

  5. MySQL☞左外链接与右外连接

    外链接查询:即要查询有关联关系的数据,还要查询没有关联关系的数据.(个人理解为:表A和表B两个关联的列中)如下图: emmm,简单的来说两个表的关联关系:book.bid=bookshop.id,他们 ...

  6. RC电路简介,RC串并联电路的工作原理及应用

    RC电路简介,RC串并联电路的工作原理及应用 RC电路全称Resistance-Capacitance Circuits.一个 相移电路(RC电路)或称 RC滤波器. RC网络, 是一个包含利用电压源 ...

  7. 集合set、map、list

    一.set 无序.可重复 public static void main(String[] args){ Set<String> set=new HashSet<String> ...

  8. 第九周个人PSP

    11.10--11.16本周例行报告 1.PSP(personal software process )个人软件过程. C(类别) C(内容) ST(开始时间) ET(结束时间) INT(间隔时间) ...

  9. 2018软工实践—Alpha冲刺(5)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助测试的进行 测试项目运行的服务器环境 ...

  10. s2sh乱码一个小处理(新手按流程走)

    解决乱码几小点: 1.配置过滤器,可以选择自己写,既然你用的SSH框架就更简单了,直接用Spring的过滤器,web.xml里配置一下即可. 2.Jsp页面设置编码,所有地方都要相同,我习惯用GBK ...