日期:2014-05-16  浏览次数:20963 次

在线等谢谢 mysql 查询
有两个表select * from after_credit_manage a where a.APPLICATION_ID=1275;
  select * from app_repayment_time where APPLICATION_ID=1275;

这个是 app_repayment_time 
2011/11/29 0:00:00
2012/2/29 0:00:00
2012/5/29 0:00:00
2012/8/29 0:00:00
2012/11/29 0:00:00
2013/2/28 0:00:00
2013/5/29 0:00:00
2013/8/29 0:00:00
2013/11/29 0:00:00
2014/2/28 0:00:00
2014/5/29 0:00:00
2014/8/29 0:00:00
2014/11/29 0:00:00 这个是 after_credit_manage 2012/4/20 0:00:00

现在我要的查询的结果是 2 8 11 。。。除了 5-29号的 等于就是 2-5月做一件事情 5-8月做已经事情 4月20号 就是说明 2-5月这个时间段 已经做了 那么就不要查询出5月





SELECT ar.CLEARING_DATE
  FROM after_credit_manage ac, app_repayment_time ar
 WHERE ac.APPLICATION_ID = ar.APPLICATION_ID
  AND year(ac.CREATE_TIME) = year(ar.CLEARING_DATE)
  AND (month(ac.CREATE_TIME) <= month(ar.CLEARING_DATE))
  AND ac.APPLICATION_ID = 1275


这个是我写的 错了 查出的结果是 
2012/5/29 0:00:00
2012/8/29 0:00:00
2012/11/29 0:00:00
 我要的是

2012/2/29 0:00:00
2012/8/29 0:00:00
2012/11/29 0:00:00

------解决方案--------------------
结果如何
SELECT a.CLEARING_DATE
FROM app_repayment_time a
WHERE year(a.CLEARING_DATE) = year('2012-4-20 0:00:00')
AND month(a.CLEARING_DATE) > month('2012-4-20 0:00:00') AND APPLICATION_ID = 1275 ORDER BY a.CLEARING_DATE LIMIT 1
------解决方案--------------------
SQL code
select CLEARING_DATE
from app_repayment_time 
where CLEARING_DATE<(select CREATE_TIME from after_credit_manage)
union all
select CLEARING_DATE
from app_repayment_time 
where CLEARING_DATE>(select CREATE_TIME from after_credit_manage)
order by CLEARING_DATE limit 1,999999