请注意这个数据库并不真实,我只是以模棱两可的方式表达了这个问题,因此它可以应用于多种情况。
所以我试图实现看似简单的输出:数据库中的客户列表,以及最昂贵订单的详细信息(如果没有订单,则为空白)。在我看来,它应该简单:
SELECT Customers.Name, MAX(Orders.Value), Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
但是,这显然只能获得列" Orders.Value"的MAX值,并且不一定返回关联的" Orders.OrderID"。
我可以使用两个查询来实现所需的结果,我选择一个患者列表,然后循环结果,使用ORDER BY为每个客户选择最昂贵的订单。但是这似乎比单个JOIN查询效率低得多,即使我必须使用子查询(我相信我这样做)。
我知道我可以使用MSSQL中的TOP和ROW_NUMBER功能实现我想要的结果,但我不确定如何在MySQL中实现它。
提前致谢!
P.S。即使没有订单,返回所有客户也很重要。所以在订单上做SELECT而不是JOINING回到客户不是(我相信)一个选项。