gpt4 book ai didi

mysql - 选择每个客户的最后一个按时间顺序排列的记录,其中每个客户在许多日期都有许多记录

转载 作者:行者123 更新时间:2023-11-29 02:30:51 25 4
gpt4 key购买 nike

我正在尝试从 MySQL 数据库中获取每个成员的最新交易,其中每个成员可能有不同数量的交易记录。我还必须将交易表链接到客户表,以确保我不会获得任何特殊订单记录。

这是我的 SQL:

Select  membertransactions.maingym_id,
membertransactions.member_id,
membertransactions.action_id,
Max(membertransactions.date_time) As 'Latest Transaction Date',
membertransactions.date_time

From bd1.membertransactions
Inner Join db1.customers
On membertransactions.member_id = customers.id
Where customers.orderno <>'SPECIAL ORDER'

AND membertransactions.main_id = 1

AND Date_Format(membertransactions.date_time,'%Y%m%d') < '20121101'

Group By membertransactions.member_id, 'Latest Transaction Date'

我为每个客户得到一行,但它并不总是按时间顺序排列的最新行。我真的被困在这里,非常感谢提供的任何帮助。

谢谢

最佳答案

因为你使用的是mysql,所以你可以使用mysql的一个特殊功能来简单地完成这件事。方法如下:

select * from (
Select
membertransactions.maingym_id,
membertransactions.member_id,
membertransactions.action_id,
membertransactions.date_time
From bd1.membertransactions
Join db1.customers On membertransactions.member_id = customers.id
Where customers.orderno <> 'SPECIAL ORDER'
AND membertransactions.main_id = 1
AND Date_Format(membertransactions.date_time,'%Y%m%d') < '20121101'
order by membertransactions.date_time desc) x
Group By member_id

我已经完全删除了 max(date) 内容,内部选择按最新日期顺序获取所有记录,然后外部选择按 member_id 分组。这是关键:在 mysql 中,如果您有一个分组,没有聚合剩余的列,您将获得该组的第一行。

其他数据库在这个SQL上会给出语法错误,但是在mysql中它就像一个魅力


还要注意更具可读性的格式。我一直不明白为什么人们使用“每行的第二个字左对齐”格式。我希望我能找到第一个这样做的人并鞭打他。

关于mysql - 选择每个客户的最后一个按时间顺序排列的记录,其中每个客户在许多日期都有许多记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13399543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com