目前,我需要找到所有发生在1分钟内的交易对方。
输出示例如下:
ID, Transaction_ID , Datetime
123, 12345 , 2017-02-01 00:01:00
124, 12345 , 2017-02-01 00:02:00
125, 12345 , 2017-02-01 02:02:00
因此,正如您所看到的,前两个事务id是相同的,并且每个事务都是在1分钟内完成的,所以我希望显示这两个事务,但不是最后一个事务,因为它是在2小时内完成的,即使它具有相同的事务id。
以下是我当前的查询:
select t.id, t.datetime, tl.transaction_id
from transactions t
left join transaction_log tl on tl.transaction_log_id = t.id
where t.datetime >= @start
and t.datetime<@end
group by t.id
谢谢您。
2条答案
按热度按时间0ejtzxu11#
为了进一步了解barmar的答案,您还需要使用groupby来过滤在一分钟内有两个以上事务时创建的任何重复对。这是由于交叉联接(交叉联接相当于联接),它将在一分钟内显示每个事务的每个示例,甚至它本身(即:一分钟内3个事务总共有9行)。“and t1.id<t2.id”约束将把这一行减少到3行,但不是您想要的行。)可以使用(partition by id)=1上的row_number(),但我不相信mysql支持这一点。
我希望这有帮助!
y0u0uwnf2#
使用
ON
条件。