不是吧,能不能将你的表结构与数据导出来帖一下呀??整理下下你的 SQL ,并建议做下面的修改SELECT DATE_FORMAT(tA.fdate, '%Y-%m') date,
tA.fsender sender,
SUM(tA.fsendcount) count
FROM monthly_usage tA
LEFT JOIN tbl_postpaidsub tB
ON CONCAT('852',tB.fsubscriber) = tA.fsender
LEFT JOIN internal_user tC
ON CONCAT('852',tC.msisdn) = tA.fsender
WHERE tC.msisdn is null
AND TO_DAYS(CONCAT(DATE_FORMAT(tA.fdate, '%Y-%m'), '-01'))
= TO_DAYS('2003-08-01')
AND TO_DAYS(CONCAT(DATE_FORMAT(tC.fregdate, '%Y-%m'), '-01'))
>= TO_DAYS('2003-08-01')
GROUP BY date, sender
HAVING SUM(tA.fsendcount) >=10
AND SUM(tA.fsendcount) < 20
date_format(tbl_postpaidsub.fregdate,'%Y-%m') >= '2003-08'是以字符串方式比较的,这会出现问题所以建议使用TO_DAYS(CONCAT(DATE_FORMAT(tC.fregdate, '%Y-%m'), '-01'))
>= TO_DAYS('2003-08-01')
tA.fsender sender,
SUM(tA.fsendcount) count
FROM monthly_usage tA
LEFT JOIN tbl_postpaidsub tB
ON CONCAT('852',tB.fsubscriber) = tA.fsender
LEFT JOIN internal_user tC
ON CONCAT('852',tC.msisdn) = tA.fsender
WHERE tC.msisdn is null
AND TO_DAYS(CONCAT(DATE_FORMAT(tA.fdate, '%Y-%m'), '-01'))
= TO_DAYS('2003-08-01')
AND TO_DAYS(CONCAT(DATE_FORMAT(tC.fregdate, '%Y-%m'), '-01'))
>= TO_DAYS('2003-08-01')
GROUP BY date, sender
HAVING SUM(tA.fsendcount) >=10
AND SUM(tA.fsendcount) < 20
date_format(tbl_postpaidsub.fregdate,'%Y-%m') >= '2003-08'是以字符串方式比较的,这会出现问题所以建议使用TO_DAYS(CONCAT(DATE_FORMAT(tC.fregdate, '%Y-%m'), '-01'))
>= TO_DAYS('2003-08-01')
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货