mysql - 比较两个表的值与一个表中的多个日期

标签 mysql

我有两张 table

员工

+=======+==========+
|id     |level     |
+=======+==========+
|1      |1         |
|2      |2         |
+=======+==========+  

员工级别

+=======+========+==========+
|emp_id |level   |date      |
+=======+========+==========+
|1      |2       |2016-08-01|
|1      |1       |2012-08-01|
|2      |2       |2012-08-01|
+=======+========+==========+

我想看看employee的级别是否与最近的emp_level匹配,所以有点像这样

+=================+===============+===============+
|emp_level.emp_id |employee.level |emp_level.level|
+=================+===============+===============+
|1                |1              |2              |
|2                |2              |2              |
+=================+===============+===============+

我已经尝试过UNION,但第二个表的结果位于不同的行,并且我不知道如何对所有 emp_id 执行此操作。我的查询:

(select id, level from employee where id="957")
union all
(select emp_id as id, level from emp_level where 
           emp_id= "957" order by date desc limit 1)

最佳答案

您可以尝试以下查询:

SELECT 
E.id,
E.level,
maxDateLevelTable.level
FROM employee E 
LEFT JOIN 
(
    SELECT 
    EL.*
    FROM emp_level EL
    INNER JOIN 
    (
        SELECT 
        emp_id,
        MAX(date) max_date
        FROM emp_level
        GROUP BY emp_id
    ) AS t
    ON t.emp_id = EL.emp_id AND t.max_date= EL.date
) AS maxDateLevelTable

ON E.id = maxDateLevelTable.emp_id
ORDER BY E.id;

See Demo

注意:您可以替换 LEFT JOIN通过INNER JOIN如果在 emp_level 中始终为每个员工找到一个条目表。

说明:

如果您单独运行此查询

    SELECT 
     EL.*
    FROM emp_level EL
    INNER JOIN 
    (
        SELECT 
        emp_id,
        MAX(date) max_date
        FROM emp_level
        GROUP BY emp_id
    ) AS t
    ON t.emp_id = EL.emp_id AND t.max_date= EL.date

那么您将从 emp_level 获取每个员工的最新数据表。

稍后制作inner join上述查询的结果和 employee 之间表以便从 employee 中获取相应的级别表。

关于mysql - 比较两个表的值与一个表中的多个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39071298/

相关文章:

python - 在 django 中进行原始 SQL 查询后结果为空,但在 mysql 数据库中使用相同的 sql 却是正确的?

mysql - 问题设置事件以清除mysql中的列

mysql - 在 phpmyadmin 中创建表时出错

MySQL - 在 Group by 上使用 desc

mysql - SQL附加列或多对一关系

MYSQL按组加权平均

java - 数据库值插入错误

mysql - 查找没有关系的所有记录的查询速度非常慢

MYSQL组列,放入下拉列表

php - PHP 中的 Zip 文件