一尘不染

MySQL查询-仅使用最新版本的条目进行内部联接

sql

我有一张表,上面jobs有各种信息。每个工作都有一个工作编号(唯一ID)。

然后有另一个表,名为purchaseOrders,具有工作ID的FK和poID的PK。

编辑采购订单条目时,将保存旧信息…,也就是说,我创建了一个新的PO条目(新的唯一ID)。

我正在尝试做的是编写一个查询,该查询 从“ jobs”选择所有字段,并从“ purchaseOrders”
选择所有字段,但仅选择该工作的最新poID

例如:

jobID      Name      State            poID      time      jobID
==========================            ==========================
1          foo       fl               1         1:00      1
2          bar       ga               2         1:10      1
3          zzz       ny               3         1:20      1
                                      4         2:00      2
                                      5         2:01      2
                                      6         2:30      2
                                      7         3:00      3
                                      8         3:40      3
                                      9         3:15      3

如何运行一个查询,该查询将从两个表中选择所有列,但只包括特定jobID的poID最高的信息?


阅读 116

收藏
2021-05-23

共1个答案

一尘不染

SELECT a., c.
FROM jobs a
INNER JOIN
(
SELECT jobID, MAX(time) maxVal
FROM purchaseOrders
GROUP BY jobID
) b ON a.jobID = b.jobID
INNER JOIN purchaseOrders c
ON c.jobID = b.JobID AND
c.time = b.maxVal

2021-05-23