我正在尝试从 Mysql 数据库获取每个客户的最新交易,其中每个客户可能有不同数量的交易记录。
这里Mysql表:
这个表我已经提到了具有粗体(样式)的行,这些 粗体行是最后的交易记录。我想要每个客户最后的交易。
我除了答案低于一个。
我需要mysql查询这个选定的记录。
您需要使用交易日期的
MAX
来查找最近的交易。由于这是一个聚合函数,您还需要 GROUP BY
您的 cus_id
。然后,此结果会为您提供客户的最新日期,以便您可以根据该 cus_id
和 tranc_date
组合连接其余数据。
查询将如下所示:
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
您可以在这个 SQL Fiddle 中看到结果。
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)
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);
一个非常简单的查询就可以解决问题,
SELECT cus_id,
tranc_amt,
tranc_type,
MAX(tranc_date) as "tranc_date"
FROM cus_tranc
GROUP BY cus_id
;
对客户 ID 进行简单分组,然后仅从每个客户 ID 的所有可能日期中选择最大值。