【发布时间】:2017-01-31 10:53:58
【问题描述】:
在my database 中,我有一个表salary 存储员工过去或当前的工资,还有一个表employees 存储我的员工。
我正在尝试选择所有获得晋升的员工:
select first_name, last_name
from salaries
join employees on employees.emp_no = salaries.emp_no
where salaries.from_date > employees.hire_date
and salary >
(select salary from salaries
where salaries.emp_no = employees.emp_no and from_date = employees.hire_date)
group by salaries.emp_no
limit 10 ;
返回:
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Georgi | Facello |
| Chirstian | Koblick |
| Kyoichi | Maliniak |
| Tzvetan | Zielinski |
| Sumant | Peac |
| Mary | Sluis |
| Patricio | Bridgland |
| Eberhardt | Terkki |
| Cristinel | Bouloucos |
| Kazuhide | Peha |
+------------+-----------+
10 rows in set (10.05 sec)
现在我正在尝试同时选择他们被雇用时的薪水(因为它已经在嵌套选择中选择了)。
有没有办法从select salary from salaries where salaries.emp_no = employees.emp_no and from_date = employees.hire_date 获取这些数据?
我尝试过类似...
select first_name, last_name, first_salary.salary
from salaries join employees on employees.emp_no = salaries.emp_no
where salaries.from_date > employees.hire_date and salary >
(select salary from salaries where salaries.emp_no = employees.emp_no and from_date = employees.hire_date)
AS FIRST_SALARY
group by salaries.emp_no
limit 10 ;
...但它显然不起作用
(否则我们可以执行 UNION,因为查询已经很长了)。
【问题讨论】: