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

MySQL 5.7 | group by | distinct |聚合错误

  •  0
  • CairoCoder  · 技术社区  · 7 年前

    我正在使用MySQL 5.7。

    我有一张桌子如下:

    --------------------------------------------------
    | id | currentcy_id | rate |      created_at     |
    --------------------|------|---------------------|
    |  1 |      1       |   1  | 2017-11-07 23:19:48 |
    |  2 |      2       |   2  | 2017-11-07 23:20:48 |
    |  3 |      3       |   4  | 2017-11-07 23:21:48 |
    |  4 |      1       |   2  | 2017-11-07 23:22:48 |
    --------------------------------------------------
    

    我正在尝试获取每个不同点的最新值 currency_id 通过执行以下操作:

    SELECT `currentcy_id`, `rate`, MAX(`created_at`)  
    FROM `currency_reates` 
    GROUP BY (`currentcy_id`)
    

    我还尝试了DISTICT功能:

    SELECT DISTINCT(`currentcy_id`), `rate`, MAX(`created_at`)  
    FROM `currency_reates`
    

    我从两个关于聚合的查询中都得到了一个错误。

    注: 我禁用了 STRICT 选项,它可以工作,但我不想这样做,我想要正确的方式(新的)。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Juan Carlos Oropeza    7 年前
    SELECT C.`currentcy_id`, C.`rate`, C.`created_at`
    FROM `currency_reates` C
    JOIN ( SELECT `currentcy_id`,  MAX(`created_at`)  as m_date
           FROM `currency_reates` 
           GROUP BY (`currentcy_id`)
         ) as T
      ON C.`currentcy_id` = T.`currentcy_id`
     AND C.`created_at` = T.m_date