想要精通算法和SQL的成长之路 - 超过经理收入的员工(SQL)
想要精通算法和SQL的成长之路 - 超过经理收入的员工(SQL)
- 前言
- 一. 超过经理收入的员工
- 1.1 自连接
- 1.2 子查询
- 1.3 join 语句
前言
想要精通算法和SQL的成长之路 - 系列导航
一. 超过经理收入的员工
原题链接
我们有这么一张Employee
表:
对应SQL如下:
CREATE TABLE `Employee` (`id` int(11) NOT NULL,`name` varchar(100) DEFAULT NULL,`salary` int(11) DEFAULT NULL,`managerId` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
该表的每一行都表示雇员的ID
、姓名、工资和经理的ID
。编写一个SQL
查询来查找收入比经理高的员工。
我们准备下表数据:
这个问题这里给出三种写法:
- 使用自连接。
- 使用子查询。
- 使用
join
语句。
1.1 自连接
因为Employee
表中的 id
和 managerId
存在着父子关系,因此我们需要用到两张Employee
表。
SELECT e.name as Employee
from Employee e , Employee e2
where e.managerId = e2.id and e.salary > e2.salary
1.2 子查询
子查询这种写法,其实就是相当于自连接的一种变相写法了。只不过把from
中的一张表单独提取出来罢了
SELECT e.name as Employee
from Employee e
where e.salary > (SELECT e2.salary from Employee e2 where e2.id = e.managerId)
1.3 join 语句
SELECT e.name as Employee
from Employee e join Employee e2
on (e.managerId = e2.id and e.salary > e2.salary)
这里说明一下,为什么上面的SQL
写的都是 e.managerId = e2.id
。
宏观角度来看,我们使用了两张一模一样的表,分别命名为e
和e2
。那么宏观角度来看,下面的两个SQL
语句确实语义是一样的:
e.managerId = e2.id
e.id = e2.managerId
不过,我们的题目里面的名称,也就是select
语句的查询字段都是来自于e
这张表。那么结合这一点,上面两个表达式的语义就完全不一样了:
e.managerId = e2.id
:代表筛选了e
这张表中,有经理的员工信息。e.id = e2.managerId
:取的是e
这张表中的经理数据。因为e2
表中的数据有managerId
的就是3和4。对应着e
表中的经理数据。
因此记住一点:取的数据来自于哪张表,条件语句就以哪张表为基准来判断。
想要精通算法和SQL的成长之路 - 超过经理收入的员工(SQL)相关推荐
- 想要精通算法和SQL的成长之路 - 两两交换链表中的节点
想要精通算法和SQL的成长之路 - 两两交换链表中的节点 前言 一. 两两交换链表中的节点 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 两两交换链表中的节点 原题链接 给你一个链表,两两 ...
- 想要精通算法和SQL的成长之路 - 第N高的薪水(SQL)
想要精通算法和SQL的成长之路 - 第N高的薪水(SQL) 前言 一. 第二高的薪水 1.1 offset 的使用 1.2 ifnull 的使用 1.3 分页查询 1.3 总结 二. 第N高的薪水 前 ...
- 想要精通算法和SQL的成长之路 - 判断子序列问题
想要精通算法和SQL的成长之路 - 判断子序列问题 前言 一. 判断子序列 1.1 动态规划做法 1.2 双指针 二. 不同的子序列 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 判断子序 ...
- sql 181. 超过经理收入的员工
Employee 表包含所有员工,他们的经理也属于员工.每个员工都有一个 Id,此外还有一列对应员工的经理的 Id. +----+-------+--------+-----------+ | Id ...
- leetcode181. 超过经理收入的员工(SQL)
Employee 表包含所有员工,他们的经理也属于员工.每个员工都有一个 Id,此外还有一列对应员工的经理的 Id. +----+-------+--------+-----------+ | Id ...
- 「SQL面试题库」 No_10 超过经理收入的员工
- 好想学python机器人_【Python成长之路】从零学GUI -- 制作智能聊天机器人
[写在前面] 鹏哥:最近老惹小燕同学不开心,结果都没人陪我聊天了.哎,好无聊呀! 肥宅男:女朋友什么的最无聊了,还没我的图灵机器人好玩. 鹏哥:图灵?好巧,和我部门同名. [效果如下] [实现过程] ...
- C语言基于FOC控制算法和STM32主控芯片的双路直流无刷电机控制器源码
[FOC+STM32]双路直流无刷电机矢量控制器-使用文档
- sql删除主键_产品经理的第一节SQL课——ID到底是干什么的?!
来这里找志同道合的小伙伴! "头脑风暴" 同大家一起学SQL之前,先简单头脑风暴一个问题:一个企业里有1000个员工,假如这1000个员工中有300个全叫张伟,如何进行区别管理呢? ...
最新文章
- 微服务架构及其最重要的 10 个设计模式!
- 图形图像显示研究(一)
- Rxjs debounce 操作符在 SAP Spartacus 函数节流中的一个实际使用例子
- 风雨20年:我所积累的20条编程经验 (转)
- 实战+练习!用机器学习预测肺癌 | 明晚8点美国西奈山博后免费直播
- VMware虚拟机上配置nginx后,本机无法访问问题(转载)
- Spring MVC-表单(Form)标签-单选按钮(RadioButton)示例(转载实践)
- wps怎么做时间线_品牌锦囊 I 我想做企业宣传册,我的公司有很多业务线,怎么设计?...
- Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期
- Unity3D加载资源的四种方式
- 编译器之词法分析器(Lexical Analyzer)
- 结构相似度索引(SSIM)全攻略:理论+代码(PyTorch)
- Python Built-in Functions内置函数用法总结(全)
- 疑犯追踪第一季/全集Person Of Interest迅雷下载
- 搭建多节点以太坊私链 10分钟搞定(超简洁)
- 利用opencv-python 进行图像的不规则裁剪
- 如何给自己打造好的“口碑”?
- 【随笔记】我的 CSDN 两周年创作纪念日
- 关于Android中的画笔画画
- My SQL 创建数据库
热门文章
- Jackson详情分析:用于诊断和疾病监测的血清学检测
- 上云发送邮件报 Could‘t connect to host,port: smtp.exmail.qq.com,25; timout -1解决方式
- Java基础项目:家庭记录收支程序
- [python算法]贪心算法+实例
- 华天动力OA客户管理系统如何将细节处理到完美?
- 智能无人机课程的硬件清单
- 服务器系统(Ubuntu)安装及环境(pytorch+gpu)配置(Tesla T4)
- Lake Shore—霍尔(磁性)传感器
- 【postgreSQL】时间类型模糊查询
- 携创教育:学历提升八种方法和途径