【发布时间】:2020-07-17 18:36:27
【问题描述】:
对于具有列 EmpId、Name 和 Salary 列的 Employee 表,该表具有列 Id、EmpId、Salary,其中 Salary 表的 EmpId 是 Employee 表的外键。
是否可以编写一个 SQL 查询,使结果包含每个员工的姓名和员工姓名提供的所有员工的工资?
样本数据
Employee表
EmpId Name
1 Alice
2 Bob
3 Charlie
4 Doug
Salary表
样本数据
Id EmpId Salary
1 1 1000
2 2 2000
3 3 3000
4 4 4000
查询我试过,但看不到,我如何写员工姓名,比如 Bob,我想在哪里获取薪水比 Bob 高的员工。下面的查询给出了工资角度的结果,但是如何按员工姓名获取?
--按条款更新,谢谢@Strawberry
SELECT s.salary
, e.empname
FROM
test.employee as e, test.salary as s
WHERE s.empid = e.empid AND s.salary > 2000
ORDER BY s.Salary DESC
LIMIT 3;
【问题讨论】:
-
"是否可以编写 SQL 查询..." 是的,可以。
-
我了解 Inner Join Eric,但我显然无法了解如何使用员工姓名进行过滤,请参见 select e.name, s.salary from employee e Inner Join pay as s where e。 empid = s.empid 这将给出所有员工的结果,但这里如何使用 emp 名称过滤器来检查?
-
...请注意,没有 ORDER BY 的 LIMIT 是毫无意义的
-
谢谢,虽然,我的结果不是按顺序实现,所以没有使用Order by Clause!公平地说,在 SELECT 语句中使用 LIMIT 子句来限制要返回的行数。但是,感谢您的提示,据我所知,最佳做法是始终使用 LIMIT 子句和 ORDER BY 子句来以唯一顺序约束结果行。
标签: mysql