首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Mysql中获取每个客户的最后一笔交易明细?

如何在Mysql中获取每个客户的最后一笔交易明细?
EN

Stack Overflow用户
提问于 2014-05-21 19:34:22
回答 4查看 15.2K关注 0票数 2

我正在尝试从数据库中获取每个客户的最新交易,其中每个客户可能有不同数量的交易记录。

在这里Mysql表:

这张表我已经提到了有粗体(样式)的行,这些粗体行是最后的交易记录。我想要每个客户的最后交易。

我除了答案是下面的一个。

我需要mysql查询这个选定的记录。

EN

回答 4

Stack Overflow用户

发布于 2014-05-21 19:43:37

您需要获取交易日期的MAX来查找最近的交易。因为这是一个聚合函数,所以您还需要GROUP BY您的cus_id。然后,此结果将为您提供客户的最新日期,以便您可以根据该cus_idtranc_date组合连接其余数据。

查询将如下所示:

代码语言:javascript
运行
复制
SELECT cus_tranc.cus_id,
       cus_tranc.tranc_amt,
       cus_tranc.tranc_type,
       cus_tranc.tranc_date
FROM cus_tranc 
INNER JOIN (
  SELECT cus_id,
         MAX(tranc_date) AS 'tranc_date'
  FROM cus_tranc
  GROUP BY cus_id) max_tranc ON cus_tranc.cus_id = max_tranc.cus_id AND cus_tranc.tranc_date = max_tranc.tranc_date

您可以在this SQL Fiddle中查看此操作的结果。

票数 6
EN

Stack Overflow用户

发布于 2014-05-21 19:38:08

代码语言:javascript
运行
复制
SELECT cus_id,
       tranc_amt,
       tranc_type,
       MAX(tranc_date) AS 'tranc_date'
FROM cus_tranc
GROUP BY cus_id
ORDER BY MAX(tranc_date)
票数 3
EN

Stack Overflow用户

发布于 2018-07-06 07:48:45

代码语言:javascript
运行
复制
SELECT cus_id,tranc_amt,tranc_type,tranc_date    
FROM cus_tranc    
WHERE tranc_date IN (SELECT MAX(tranc_date)
                     FROM cus_tranc
                     GROUP BY cus_id);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23782011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档