首页 > 解决方案 > MySQL中最小日期的提取量

问题描述

我已经在 Postgres 中的最短日期的 Extract amount 中向PostgreSQL 提出了这个问题。本质上,我需要获取每个帐户的最短日期的金额。我试过了

SELECT B.* FROM
(SELECT amount, account, min(date)
    FROM new_schema.stg_payment_mysql GROUP BY account
) A INNER JOIN new_schema.stg_payment_mysql  B USING (account,date)

但得到'错误代码:1054。'from 子句'0.781 sec'中的未知列'date'。

如果我在日期之前添加 new_schema.stg_payment_mysql,我会得到“错误代码:1064”。

我也试过:

SELECT amount, account, min(date) date
    FROM new_schema.stg_payment_mysql GROUB BY account

但金额选择不正确。我觉得第一个查询是正确的,但我不明白错误。

标签: mysql

解决方案


第一个查询几乎是正确的。你忘了给你的 min(date) 起别名

SELECT B.* 
FROM
  (
    SELECT account, min(`date`) as mindate
    FROM new_schema.stg_payment_mysql       
    GROUP BY account
  ) A 
  INNER JOIN 
  new_schema.stg_payment_mysql  B
  ON a.account = b.account and b.`date` =  a.mindate

我将 date 重命名为 mindate 有两个原因 - 一是避免将列命名为保留字,二是为了更清楚地了解数据流是什么以及查询是如何工作的

您也不需要在A中选择金额;它将来自 b


推荐阅读