SQL - 从子查询中提取列

时间:2014-08-27 16:15:52

标签: sql subquery

我正在开发一个用于拍卖的数据库,我希望获得所有中标的ID。困难的部分是从返回2列的子查询中提取它:id和amount。 它看起来像这样:  SELECT id FROM Bid WHERE id IN (Select ID,max(amount) FROM Bid group by bid.idAuction)

我可以以某种方式从子查询中提取一列吗?执行此任务的任何其他sugestions也都有帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

您的查询已关闭,但您需要相关子查询才能使其正常工作:

SELECT b.id
FROM Bid b
WHERE b.amount = (SELECT max(amount)
                  FROM Bid b2 
                  WHERE b2.idAuction = b.idAuction
                 );

答案 1 :(得分:1)

SELECT id, maxBid.MAmount, Bid.Amount
FROM Bid 
INNER JOIN (Select ID,max(amount) mamount FROM Bid group by bid.idAuction) MaxBid
 on MaxBid.ID = Bid.ID

RDBMS和SQL在基于SET的操作中运行最有效。因此,在这种情况下,我们会根据ID和最高出价生成一组。然后我们将其加入到基本集中,以便只对最高出价进行调整。