4

我有一张桌子,jobs用各种信息命名。每个作业都有一个作业编号(唯一 ID)。

然后是另一个表,命名为purchaseOrders具有 jobID 的 FK 和 poID 的 PK。

编辑采购订单条目时,会保存旧信息……意思是,我创建了一个新的采购订单条目(新的唯一 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 信息?

4

1 回答 1

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
于 2012-12-19T01:24:28.930 回答