我对更高级的 SQL 查询相当陌生
给定下表和关联字段:
人 人员 ID、名字、姓氏
订单 订单 ID、人员 ID、订单日期时间
我想编写一个查询,通过 PersonId 连接两个表,并检索每个人及其最近的订单。
因此,如果下面的 James Doe (PersonId = 1) 在订单表中有很多订单,
订单 ID、人员 ID、订单日期时间
1 1 12/1/2013 9:01 AM
2 1 2/1/2011 5:01 AM
3 2 10/1/2010 1:10 AM
他只需要最新的。
PersonId 姓名名字姓氏订单 ID 订单日期时间
1 James Doe 1 12/1/2013 9:01 AM
2 John Doe 3 10/1/2010 1:10 AM
我一直在尝试这样的事情
SELECT p.PersonID, o.OrderID, MAX(o.OrderDateTime) From Person p
JOIN Orders o ON p.PersonID = o.PersonID
GROUP BY p.PersonID,
谢谢
最佳答案
此解决方案中的内部查询是一个临时表,其中包含每个人的最新订单。我将其连接回 Orders
表以获取所需的字段,然后再次连接到 Person
表。
SELECT p.PersonID, p.NameFirst, p.NameLast, o.OrderID, o.OrderDateTime
FROM Person p INNER JOIN Orders o
ON o.PersonId = p.PersonId
INNER JOIN
(
SELECT o1.PersonId, MAX(o1.OrderDateTime) AS maxTime
FROM Orders o1
GROUP BY o1.PersonId
) t
ON o.PersonId = t.PersonId AND o.OrderDateTime = t.maxTime
关于mysql - SQL 从 join 中获取最多相似的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31544035/