【发布时间】:2016-01-22 16:27:12
【问题描述】:
我从customers 表中选择一位客户,并尝试从jobs 表中获取该客户的最新订单号,但基于该表中不同的时间戳列。
客户
id | name | ...
工作
id | customer_id | order_id | assigned
----------------------------------------------------
1 | 985 | 8020 | 2015-12-03 00:00:00
2 | 985 | 4567 | 2015-04-19 00:00:00
3 | 985 | 9390 | 2016-20-01 00:00:00
4 | 985 | 6381 | 2015-08-26 00:00:00
应该加入的最新order_id是9390,因为assigned时间戳是最新的。
SQL
SELECT c.name, j.latest_order
FROM customers c
LEFT JOIN (
SELECT customer_id,
??? AS latest_order
FROM jobs
WHERE withdrawn IS NULL
GROUP BY customer_id
) j ON j.customer_id = c.id
WHERE c.id = 985
我真的不知道在子查询中获取latest_order 的最佳方法,但对于该客户来说,它应该是jobs.order_id where jobs.assigned = MAX(jobs.assigned)。
【问题讨论】:
-
您想要一张包含所有客户及其最新订单的表格,还是只针对特定一个?
-
@OscarAnthony 只是一个特定的。我总是知道我想要的客户 ID。
-
好的。然后只需对客户的订单进行排序并拿走第一个。