标签:Salary 别名 连接 3.6 SELECT Employee LeetCode 解法
链接:https://leetcode-cn.com/problems/employees-earning-more-than-their-managers/
部门工资最高的员工
一、答案;
解法-1
SELECT a.name AS Employee FROM Employee a (这里省略了,没用AS指定别名 ,而是直接认为数据库里面就存在一个虚拟的表 Employee a )
join Employee b
ON a.managerid= b.id
WHERE a.Salary > b.Salary;
解法-2
完整的写法应该是
SELECT a.name AS Employee (指定列名)
FROM Employee AS a (指定表名)
JOIN Employee AS b
ON a.ManagerId = b.Id
Where a.Salary > b.Salary; (注:这里的where 可以用 AND代替 效果一样)
明显:解法-1 的运行更快
二、解题思路
”和自己的xxx比” 这种问题基本都是自连接问题
三、涉及的知识点
3.1自连接
SELECT * FROM Employee AS a ,Employee AS b;
从表a,以及表b里使用select查询语句,会导致笛卡尔积
会产生 4*4=16 条记录
3.2 SQL 语句执行的顺序
7 select 查询列表
1 from 表1 别名 【连接类型】
2 join 表2 别名
3 on 连接条件
4【where 筛选条件】
5【group by 分组】
6【having 分组后的筛选条件】
8【order by 排序列表】
下面的例子很好的说明:笛卡尔积
标签:Salary,别名,连接,3.6,SELECT,Employee,LeetCode,解法 来源: https://www.cnblogs.com/caifu12ziyou13-jingshen96zioyu/p/14491657.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。