我已经从MySQL (Test DB)安装了TestDB,并且想进行一些基本查询。其中之一是:把薪水还给我每位员工。薪水表包含该雇员曾经有过的每个薪水的清单,以及截止日期。我只想要新员工的薪水,所以“ from_date”最高的人。我设法将这两个表一起Join,并且设法用每个员工的编号将每个员工的最高薪水还给我。但是我不能把他们聚在一起。我在网上什么都没找到。 Maby我只是不知道要搜索什么。

无论如何,这就是我想出的:

为每个emp_no选择最高薪水:

select emp_no, max(from_date) from salaries group by emp_no


选择每位员工的最高薪水,然后将其与其他数据一起加入(此工作无效):

select * from employees e
LEFT JOIN salaries s
ON e.emp_no = s.emp_no
where s.from_date=(select max(from_date) from salaries group by emp_no);


这是EER:

mysql - 选择子查询中的最大日期-LMLPHP

最佳答案

如果您想要每个雇员的最新薪水,则将salaries表连接到子查询:

SELECT e.*, s1.*
FROM employees e
LEFT JOIN salaries s1
    ON e.emp_no = s1.emp_no
INNER JOIN
(
    SELECT emp_no, MAX(from_date) AS max_from_date
    FROM salaries
    GROUP BY emp_no
) s2
    ON s1.emp_no    = s2.emp_no AND
       s1.from_date = s2.max_from_date;

关于mysql - 选择子查询中的最大日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49188844/

10-16 05:58