MySQL,按操作寄存器\日期取人

MySQL,按操作寄存器\日期取人,mysql,sql,Mysql,Sql,我有两张桌子 人员id主键和操作人员id外键 我需要获取每个交易间隔超过一年的人员列表 [![在此处输入图像描述][3][3] 例如,Jessiy'a的交易是 2012-12-25 TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) > 1 YEAR(OK) 2015-01-11 TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 Y

我有两张桌子

人员id主键和操作人员id外键

我需要获取每个交易间隔超过一年的人员列表

[![在此处输入图像描述][3][3]

例如,Jessiy'a的交易是

2012-12-25  
               TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) > 1 YEAR(OK)
2015-01-11
               TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 YEAR 
2015-09-11
               TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 YEAR
2016-09-11
                TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 YEAR 
2016-01-11
                TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 YEAR 
2017-09-11
                TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 YEAR 
2017-08-11
                TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 YEAR 
2017-11-11
                TIMEDIFF(op1.REGISTER_DATE,op1.REGISTER_DATE) < 1 YEAR 
2017-01-11

如果任何时间差>年,那么将此人添加到我的列表中,我需要这些人..请帮助

我会这样做

select x from persons p 
   where not exists 
     (select o.id from operations o join operation o2 
      where o.person_id = p.id 
            and o2.person_id = p.id 
            and o.id != o2.id 
            and timediff(o.register_date, o2.register_date) < 1 year)

我只是想设计一个想法,timediff是你必须查找的东西,看看如何减去时间戳,并与时间间隔进行比较

在Oracle中,我尝试了这个……这是可行的……但在MySQL中呢

SELECT  PERSON_ID FROM
(
SELECT 
op.PERSON_ID,
row_number() OVER (PARTITION BY op.PERSON_ID ORDER BY op.PERSON_ID) rownumber,
LEAD(op.REGISTER_DATE,1) over(PARTITION by op.PERSON_ID order by op.REGISTER_DATE),
MONTHS_BETWEEN(LEAD(op.REGISTER_DATE,1) over(PARTITION by op.PERSON_ID order by op.REGISTER_DATE),op.REGISTER_DATE)AS ferq
FROM operations op
)
WHERE ferq >= 12 AND rownumber = 1;

StackOverflow不是一个愿望列表站点。我们不会仅仅因为您发布了请求就为您编写代码。我们可以帮你解决问题,但你的工作是首先解决这个问题,包括基本问题。亲爱的Marcin,这不是一个愿望。我已经做了足够的努力。但是,我做不到。准确地说,找到交易时间相差一年或更长的人,这意味着几乎所有人都不存在两种不同的操作,已经快一年了。你也可以找到只做一次手术的人。您根本不想要这些,或者如果从现在起这些产品的使用时间超过1年,您想退货吗?无论如何,应该给出一个想法,如何实现这一点。。。。。