文章目录

1.题目

【LeetCode-Database181】超过经理收入的员工(where or join)_mysql

2.法一(where)

从表a和b中数据进行查找(笛卡尔积,如上栗子是16种情况),再用where的2个筛选条件。
——题目要求是超过经理收入的员工所以从这个a.Salary > b.Salary条件可以得知a是员工b是经理,a.ManagerId = b.Id可以知道经理对应哪些员工。

# Write your MySQL query statement below
SELECT
a.Name as 'Employee'
FROM
Employee as a,
Employee as b
where
a.ManagerID=b.ID
AND a.Salary>b.Salary

3.法二(join)

​inner join​​​内连接(又叫等值连接),​​inner​​​可以省略掉,表示取两个表的“交集”;左连接和则是取左边的所有集合,右连接则是取右边的所有集合(联想概率统计里面的文氏图即可)。
另外的where的和法一一毛一样(其实法二和法一差不多。。)
select…as 可理解为:用作、作为,一般是重命名列名或者表名

# Write your MySQL query statement below
select a.name as Employee
from Employee as a inner join Employee as b
where a.managerid=b.id
and a.salary>b.salary

借用leetcode上“一只猪的题解”的题解里的图:

【LeetCode-Database181】超过经理收入的员工(where or join)_mysql_02

4.reference

​SQL中连接(JOIN)的用法​​​​SQL SELECT完整语法​