MySQL-基于相同表记录的where子句

MySQL-基于相同表记录的where子句,mysql,Mysql,我有下面的登记表 以及简单的查询: SELECT ID , PersonID , CheckInDate FROM Registration WHERE CheckInDate >= '2018-06-01' AND CheckInDate < '2018-07-01' ` 如果以前的注册时间少于30天,如何从该集中获取所有注册 所以,对于每一次注册,我必须检查同一个人之前是否有针对同一个人ID的注册 我可以用一个查询来解决这个问题吗 您

我有下面的登记表

以及简单的查询:

SELECT ID
     , PersonID 
     , CheckInDate  
  FROM Registration 
 WHERE CheckInDate >= '2018-06-01' 
   AND CheckInDate  < '2018-07-01'
`

如果以前的注册时间少于30天,如何从该集中获取所有注册

所以,对于每一次注册,我必须检查同一个人之前是否有针对同一个人ID的注册

我可以用一个查询来解决这个问题吗

您可以使用WHERE EXISTS子句:


请看,我可以使用单个查询解决此问题吗?对请读:安德烈亚斯,让我看看query@Paramore你现在是在命令我吗?你不认为提高你的问题的质量会更好吗?安德烈亚斯,如果你在30天内有以前注册的地方,请告诉我你的问题?因此,>0先前值和<30。还有可能翻转参数?@Sianur,我可以从该查询中获取maxr2.CheckInDate吗?@Paramore,不,这里的检查只针对存在性。@Sianur,有没有一种方法可以使用单个查询来实现这一点?也许我应该再把结果放在登记表上
SELECT ID
     , PersonID 
     , CheckInDate  
  FROM Registration 
 WHERE CheckInDate >= '2018-06-01' 
   AND CheckInDate  < '2018-07-01'
SELECT ID, PersonID, CheckInDate
  FROM Registration r1
  WHERE CheckInDate>='2018-06-01'
    AND CheckInDate< '2018-07-01'
    AND EXISTS (SELECT 1 FROM Registration r2 
      WHERE r1.PersonID = r2.PersonID
        AND r1.CheckInDate > r2.CheckInDate
        AND datediff(r1.CheckInDate, r2.CheckInDate) < 30)