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)