目录
语法
需求
示例
分析
代码
语法
FROM Employee a, Employee b
两个表之间笛卡尔积(Cartesian product)的形式,用了逗号分隔的连接(comma-separated join),这是早期SQL语法中用于连接表的一种方式,也可以使用显式的JOIN
语法。
这里指定了查询要使用的表。Employee
表被赋予了两个别名a
和b
,但由于没有提供连接条件,这两个表将按照它们的行数进行笛卡尔积组合。
WHERE Condition
WHERE子句通过指定条件来过滤数据,仅检索满足条件的行。这些条件通常使用布尔表达式来表示,布尔表达式可以使用布尔运算符(如AND、OR、NOT)、比较运算符(如=、>、<等)以及更高级的功能(如子查询、IN/NOT IN、LIKE和BETWEEN)来构建。
在使用WHERE子句时,应确保条件表达式正确无误,以避免返回错误的结果集。对于大型数据库表,使用适当的索引可以显著提高WHERE子句的性能。where语句在使用LIKE进行模糊匹配时,应注意通配符的使用,以避免匹配到意外的结果。
需求
表:Employee
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | | salary | int | | managerId | int | +-------------+---------+ id 是该表的主键(具有唯一值的列)。 该表的每一行都表示雇员的ID、姓名、工资和经理的ID。
编写解决方案,找出收入比经理高的员工。
以 任意顺序 返回结果表。
结果格式如下所示。
示例
输入: Employee 表: +----+-------+--------+-----------+ | id | name | salary | managerId | +----+-------+--------+-----------+ | 1 | Joe | 70000 | 3 | | 2 | Henry | 80000 | 4 | | 3 | Sam | 60000 | Null | | 4 | Max | 90000 | Null | +----+-------+--------+-----------+ 输出: +----------+ | Employee | +----------+ | Joe | +----------+ 解释: Joe 是唯一挣得比经理多的雇员。
分析
表格里存有每个雇员和对应经理的信息,需要从这个表里获取两次信息。
from Employee a, Employee b
找出收入比经理高的员工
需求很简单,这种情况需要训练速度
本质是一种数值比较,直接考虑where+不等式,
观察员工id和经理id的关系,这个只需要找比对应经理高的即可
那么where a.ManagerId = b.Id and a.salary>b.salary 即可实现需求
代码
select a.name as Employee
from Employee a,Employee b
where
a.ManagerId =b.Id
and a.salary>b.salary