1
我有一个“用户”表字段UserId和addedDate。MySql查询:如何从给定日期值中选择最近90天内不存在的数据?
我需要得到用户的数据 - 在上个月和本月加入,而不是在系统前90天添加日期。
用户表
Userid addedDate enddate
001 2017-07-01 2017-09-05
002 2017-02-25 2017-02-01
003 2017-06-01 2017-09-21
003 2017-04-25 2017-05-29
004 2017-06-01 2017-09-21
005 2017-06-05 2017-09-07
005 2017-01-01 2017-01-31
我需要输出像:
userid
001
004
005
这里003不需要为它不是一个新用户(作为其可用的系统对于前90天加入日期)。并且002不会添加在最近的飞蛾或当前飞蛾中,所以这也不能被视为新用户。
我曾尝试下面的查询,但它不是做工精细:
select userid from usertbl final
WHERE final.userid NOT IN (
SELECT meb.userid
FROM usertbl meb
INNER JOIN
(
SELECT mc.userid, addeddate, enddate
FROM usertbl mc
WHERE mc.enddate > NOW()
AND mc.addeddate > DATE_ADD(NOW(), INTERVAL -90 DAY)
) s
ON s.userid = meb.userid
AND
(
meb.enddate > DATE_ADD(s.addeddate,INTERVAL -90 DAY)
AND meb.enddate <> s.enddate
)
)
请提供一些建议。
顺便说一句,这是题外话。 – tilz0R
@ tilz0R它为什么要这样?我看到示例数据,期望的结果,甚至解释以及OP已经尝试的查询。其实这是一个SQL问题应该如何。 – fancyPants