mysql - 查询表中的所有数据,仅连接连接表中的最新记录

标签 mysql sql database junction-table

我正在使用与此类似的数据库结构:http://dev.mysql.com/doc/employee/en/sakila-structure.html

表:员工

包含每位员工信息的表格。

+---------+----------+
| emp_no* | emp_name |
+---------+----------+
| emp1    | John     |
| emp2    | Mike     |
| emp3    | Rob      |
| emp4    | Kim      |
+---------+----------+

表:部门

包含有关公司部门信息的表格。

+----------+-----------+
| dept_no* | dept_name |
+----------+-----------+
|       1  | Dep 1     |
|       2  | Dep 2     |
|       3  | Dep 3     |
|       4  | Dep 4     |
|       5  | Dep 5     |
+----------+-----------+

连接表:emp_dept

主键:[emp_nofrom_date]

用于跟踪员工之前工作过或现在正在工作的部门的表格。

+---------+----------+------------+------------+
| emp_no* | dept_no  | from_date* |  to_date   |
+---------+----------+------------+------------+
| emp1    |        1 | 2010-01-01 | 2010-12-31 |
| emp2    |        2 | 2010-01-01 | 2013-10-31 |
| emp1    |        4 | 2010-12-31 | 2012-06-14 |
| emp3    |        3 | 2010-01-01 | 2011-08-14 |
| emp4    |        1 | 2010-01-01 | 2014-11-14 |
| emp2    |        5 | 2013-10-31 | 2014-11-14 |
| emp1    |        3 | 2012-06-14 | 2014-11-17 |
| emp3    |        1 | 2011-08-14 | 2013-07-20 |
| emp3    |        4 | 2013-07-20 | 2014-11-14 |
+---------+----------+------------+------------+

预期表格:

如何才能仅将连接表 (emp_dept) 中每个员工的最新记录连接到我的员工表并获得如下所示的表?

+---------+----------+--------+
| emp_no* | emp_name | dep_no |
+---------+----------+--------+
| emp1    | John     |      3 |
| emp2    | Mike     |      5 |
| emp3    | Rob      |      4 |
| emp4    | Kim      |      1 |
+---------+----------+--------+

最佳答案

假设emp_dept.Emp_noemployees.Emp_no之间的关系

Select * from 
employees e
join emp_dept ed on e.emp_no = ed.emp_no 
                    and from_date = (Select Max(from_date) 
                       from emp_dept ed2 where ed2.emp_no = e.emp_no)

关于mysql - 查询表中的所有数据,仅连接连接表中的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26979064/

相关文章:

php - MySQL 高级选择语法

mysql - mySQL数据库查询优化

sql - SELECT MAX(x) FROM table WHERE y=y1 AND z=z1 的 Postgresql 索引

database - Scala 异步数据库调用

java - 仅使用一组示例数据创建生产的测试数据库副本

database - 如何创建数据库的 MongoDB 转储?

mysql - 将sql文件导入新数据库速度

mysql - 如何使用 SQL (MySQL) 对表中的列进行排序?

mysql - 将 sql 数据库导出到我的 PC 是否安全?

php - 点击后如何获取图片名称?