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

时间:2012-12-19 01:21:11

标签: mysql sql inner-join

我有一张名为jobs的表格,其中包含各种信息。每个工作都有一个工作号码(唯一ID)。

然后有另一个名为purchaseOrders的表,它具有jobID的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信息?

1 个答案:

答案 0 :(得分:4)

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