我有这两个表:
Person:
+----+-------+
| ID | name |
+----+-------+
| 1 | John |
| 2 | Frank |
+----+-------+
Position:
+----+---------+----------+------------+
| ID | name | personID | startDate |
+----+---------+----------+------------+
| 1 | Cashier | 1 | 2013-01-01 |
| 2 | Manager | 1 | 2013-04-23 |
| 3 | Cashier | 2 | 2014-02-01 |
+----+---------+----------+------------+
Position
表跟踪一个人持有的各种职位。
如何创建一个列表,显示每个人及其当前位置(哪个位置具有最新的开始日期)?基本上我需要限制JOIN
表的Position
只返回一个结果。
我尝试了以下代码。
SELECT p.id, h.positionID FROM person p JOIN position h ON p.id = h.personID
答案 0 :(得分:4)
请尝试以下方法: -
select p.ID, pp.name PersonName, p.name PositionName ,p.startDate
from Position p
inner join
(select personID, max(startDate) sdate from Position group by personID) as a
on p.personID = a.personID and p.startDate = a.sdate
left join Person pp
on pp.ID = p.personID
然而,强烈建议您发布您尝试过的代码。
<强> SQL Fiddle 强>