【问题标题】:How do I select the highest BidAmount for each CarID如何为每个 CarID 选择最高 BidAmount
【发布时间】:2019-01-30 18:16:39
【问题描述】:

我正在尝试从 CarDetails 表中选择数据,而引用 CarID. BidDetails 的 BidDetails 表中有多个引用同一辆车的“出价”。

CarDetails Columns: CarID, Make,...

BidDetails Columns: CarID, BidderID, Amount

选择的数据应该是每辆车的 CarDetails 表中的数据,以及为每辆车制作的最高 bid

不过,我会选择每个出价以及相应的汽车信息。

代替:

CarID: 1 , Make: Toyota, BidAmount: 50000;
CarID: 2 , Make: Honda, BidAmount: 95000

我明白了:

CarID: 1 , Make: Toyota, BidAmount: 50000;
CarID: 1 , Make: Toyota, BidAmount: 30000;
CarID: 2 , Make: Honda, BidAmount: 95000

【问题讨论】:

  • 标记您正在使用的 DBMS(即MySQLSQL Server 等)。

标签: sql


【解决方案1】:

您在寻找简单的聚合吗?

SELECT CD.CarID, CD.Make, MAX(BD.BidAmount)
FROM CarDetails CD INNER JOIN
     BidDetails BD
     ON BD.CarID = CD.CarID
GROUP BY CD.CarID, CD.Make;

如果表格有更多你想要的列,那么你需要关联subquery

SELECT CD.CarID, CD.Make, BD.BidAmount
FROM CarDetails CD INNER JOIN
     BidDetails BD
     ON BD.CarID = CD.CarID
WHERE BD.BidAmount = (SELECT MAX(BD1.BidAmount) FROM BidDetails BD1 WHERE BD1.CarID = CD.CarID);

【讨论】:

    【解决方案2】:

    你可以试试下面-

    select carid, make,max(bidamount) as bidamount
    from CarDetails CD INNER JOIN BidDetails BD
    group by carid, make
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 2021-10-07
      • 2013-02-14
      • 2018-10-07
      相关资源
      最近更新 更多