代码之家  ›  专栏  ›  技术社区  ›  Ben

MAX(Date)在MySQL中返回了不正确的列数据

  •  -2
  • Ben  · 技术社区  · 8 年前

    在下面的查询中,我在MAX(Date)上得到了正确的返回值,但在BidModifier列上的返回值不正确。是否需要添加一行,以便获得与我的最大日期相对应的正确数据?

    以下是我的疑问:

     SELECT AdGRoupId, Criteria, MAX(DATE) LatestDate , CpcBid, CpcBidSource, 
     BidModifier
     FROM aw_placementbid
     WHERE DATE
     IN (
     SELECT DATE
     FROM aw_placementbid
     GROUP BY AdGroupId, Criteria
     )
     GROUP BY AdGroupId, Criteria
     ORDER BY BidModifier DESC 
    

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  -1
  •   walter    8 年前

    尝试此查询:

     SELECT AdGRoupId, Criteria, DATE, CpcBid, CpcBidSource, BidModifier
     FROM
     (
       SELECT AdGRoupId, Criteria, DATE, CpcBid, CpcBidSource, BidModifier
       FROM aw_placementbid 
       ORDER BY DATE DESC
     ) AS t
     GROUP BY AdGroupId, Criteria
     ORDER BY BidModifier DESC
    

    首先,您选择所需的所有数据并按 DATE ,从而记录了 日期: 将排在榜首。

    然后,将上面的临时表分成几个组(通过 GROUP BY AdGroupId, Criteria ).

    最后,只需获取每个组的第一行(必须是具有 MAX(DATE) 正如您之前对所有记录进行了排序一样)。