SQL选择不同的数据

SQL选择不同的数据,sql,Sql,假设我有叫Orders和OrdersInfo的表。Orders表如下所示: OrderID 1 2 3 和订单信息 OrderID ProductID Amount 1 1 2 1 2 1 2 3 4 我想用最新的OrderID获取所有信息。 在这种情况下,答案应该是OrderID 3的信息,该信息将为空。我的问题是,我必须对它进行分组,而我的信息没有正确显示。 我试过这样的方法: SELECT OI.Ord

假设我有叫Orders和OrdersInfo的表。Orders表如下所示:

OrderID
1
2
3
和订单信息

OrderID ProductID Amount
1       1         2
1       2         1
2       3         4
我想用最新的OrderID获取所有信息。 在这种情况下,答案应该是OrderID 3的信息,该信息将为空。我的问题是,我必须对它进行分组,而我的信息没有正确显示。 我试过这样的方法:

SELECT OI.OrderID, OI.ProductID, OI.Amount
FROM OrdersInfo OI
JOIN Orders O
ON OI.OrderID = O.OrderID
GROUP BY OI.OrderID, OI.ProductID, OI.Amount
HAVING OI.OrderID = MAX(O.OrderID)

使用
LEFT JOIN
,您将获得
OrderID=3的空值

SELECT TOP 1 O.OrderID, OI.ProductID, OI.Amount
FROM Orders O 
LEFT JOIN OrdersInfo OI
       ON OI.OrderID = O.OrderID
ORDER BY O.OrderId DESC
对MSQL服务器使用
TOP 1
<代码>限制1
对于postgresql

您可以尝试此方法-

SELECT
O.OrderID
,OI.ProductID
,OI.Amount

 FROM
(
SELECT
     MAX(OrderID) AS OrderID
FROM Orders
) AS O
LEFT JOIN OrdersInfo AS OI
OI.OrderID=O.OrderID

@瑞安·文森特:若ID是自动递增的,那个么这个ID就足够了。我有一个递增ID的过程。我希望表是空的。(想尝试这种方式而不创建临时表)告诉我们您的期望输出是什么。请阅读,这里是一个学习如何提高你的问题质量和获得更好答案的好地方。@JuanCarlosOropeza我给你看的。但既然你写得不好,我就很难理解我想要什么。你不理解什么部分或欲望输出?您编写的是
订单
订单信息
,但不是您期望的最终结果。如果你包括当前输出和期望输出,我们可以检测出什么是错误的,并修复它。这是一个糟糕的代码。您需要根据所选内容分组。即使这是一个糟糕的代码,你这样对试图免费帮助你的人说也是不礼貌的。你也可以把错误信息包括进来,这样我就可以尝试修复它了。对评论态度强硬总比态度温和好。然后,人们会更多地考虑这一点,并尝试下次做得更好;)。这不是让我烦恼的严厉的部分,是评论没有帮助的部分,因为没有包含错误信息。我用一个简单的解决方案给出了我的答案,但因为您没有指定什么是rdbms,所以不确定使用什么限制