我有一张table叫 Auction
它有一个 auctionID
. 我还有一张table叫 bid
它持有 auctionID
(作为外键)以及金额是多少。
我要做的是列出 auctionID
在一列和金额最高的出价在另一列。
我尝试了不同的方法来进行内部连接,以使其正确显示,但失败得很惨。请记住,我对mysql完全是个新手,解决方案很可能是我应该回去重新设计整个数据库。
最接近我想要显示的是下面两种不同的方法。
第一个
SELECT auction.auctionID, bid.bid
from bid
INNER JOIN
auction on auction.auctionsID = bid.auctionsID;
第二种情况如下
SELECT auction.auctionsID, bid.bid
from bid
INNER JOIN
auction on auction.auctionsID = bid.auctionsID
where bid.bid = (select max(bid.bid) from bid);
第一个显示所有的出价,已经作出了什么数额,他们在哪里,但我只想对每个出价最高 auctionID
.
第二个只显示在所有不同的拍卖会上有史以来的绝对最高出价 auctionID
那次特别的拍卖已经成功了。
我的猜测是我需要某种嵌套的join语句,但我实在想不起来。
提前谢谢!
编辑:多棒的经历啊。作为一个长期的用户,出于绝望创建了一个帐户今天问我的第一个问题。我从这个社区得到了很棒的帮助。
答案是:
SELECT auctionid, MAX(bid) as maxbid FROM bid GROUP BY auctionid;
由caius jard和deependra bhandari提供
4条答案
按热度按时间7uhlpewt1#
我想你只是想
GROUP BY
查询:这假设您希望找到每个拍卖的最高出价。
nbewdwxp2#
如果您只需要两列,并且这两列在bid表中都可用,那么为什么要进行join。使用下面的一个。
按auctionid从bid组中选择auctionid,max(bid)作为最高发票;
wgeznvg73#
在加入之前对bids表进行分组
因此,您将获得每次拍卖的详细信息(包括id)以及每次拍卖的最高出价
迪彭德拉说得很好;你说过你只需要auctionid和max bid,这个信息只能从bids表(子查询别名为
b
在我上面的代码中,如果您真的需要它,请将我的查询简化为子查询。如果您以后需要有关拍卖的所有其他信息,以及其最大出价,请使用上面的查询如果您需要所有拍卖信息和所有maxbid信息,对于每个拍卖,您可以这样做:
这将返回有关拍卖的所有信息和有关最高出价的所有信息。希望你只允许独特的出价,否则我们将进入一个更复杂的“最新”最高出价的情况
xfyts7mz4#
如果你想拔出
bid
在给定拍卖的最高出价中,使用JOIN
使用相关子查询: