我有一个名为Auction
的表,其中包含一个auctionID
。我还有一个名为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提供
答案 0 :(得分:1)
我认为您只需要一个GROUP BY
查询:
SELECT
a.auctionID, MAX(b.bid) AS max_bid
FROM auction a
INNER JOIN bid b
ON a.auctionsID = b.auctionsID
GROUP BY
a.auctionID;
这假设您要为每次拍卖找到最高出价。
答案 1 :(得分:0)
在加入之前对出价表进行分组
SELECT * FROM
auction a
INNER JOIN
(SELECT auctionid, MAX(bid) as maxbid FROM bid GROUP BY auctionid) b
on a.auctionid = b.auctionid
因此,您将获得每次拍卖的详细信息(包括ID)以及每次拍卖的最高出价
迪彭德拉(Deependra)提出了一个观点;您确实说过,您只想要拍卖编号和最高出价,而该信息只能从bids表中得出(在我的上面的代码中,别名为b
的子查询,因此,如果这是您真正需要的所有内容,请剥离我的查询只是子查询。如果您以后想要有关拍卖的所有其他信息及其最高出价,请使用上面的查询
如果您需要所有拍卖信息和所有最大出价信息,则可以针对每次拍卖执行以下操作:
SELECT * FROM
auction a
INNER JOIN
bid b
ON a.auctionid = b.auctionid
INNER JOIN
(SELECT auctionid, MAX(bid) as maxbid FROM bid GROUP BY auctionid) mb
on a.auctionid = mb.auctionid and b.bid = mb.maxbid
这将返回有关拍卖的所有信息以及有关最高出价的所有信息。希望您只允许唯一出价,否则我们将陷入更复杂的“最新”最高出价方案
答案 2 :(得分:0)
如果您只需要两列,并且在投标表中都可用,那么为什么要加入。使用以下内容。
选择auctionID,最高(出价)为最高发票 从出价 按AuctionID分组;
答案 3 :(得分:0)
如果您想针对给定的拍卖提取最高出价的bid
,请使用带有相关子查询的JOIN
:
SELECT a.auctionsID, b.bid
FROM
bid
INNER JOIN auction a
ON a.auctionsID = b.auctionsID
AND b.amount = (SELECT MAX(amount) FROM bid WHERE bid = b.bid)