mysql - SELECT where 子查询中的最大日期

标签 mysql select subquery left-join

我已经从 MySQL 安装了 TestDB (Test DB)我想做一些基本的查询。其中之一就是:把每一位员工的工资都给我退。工资表包含员工曾经领取过的每份工资的列表,以及起始日期和截止日期。我只想要最新的工资,所以是“from_date”最高的工资。我已成功将 2 个表加入在一起,并成功返回每位员工的最高工资及其员工编号。但我无法让他们在一起。我在网上什么也没找到。 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:

EER

最佳答案

如果您想要每个员工的最新工资,请将 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 - SELECT where 子查询中的最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49188844/

相关文章:

postgresql - 获取每一行的列表值(来自另一个表的 ID 列表)

mysql - 从子子查询中引用父查询中的表

python - PyMYSQL - 选择值可以为 NULL 的位置

mysql - 从没有自动 ID 的表中选择最后 250 行

PHP数组转mysql select语句

javascript - 自动选择 html 选择标签的前一个和下一个选项

Mysql 引用嵌套查询的派生表

mysql - sails.js 多对多关系连接表的额外字段

php - 将 XML 数据提取到 MySQL

java - 无法从 servlet 访问我的数据库