注意mysql中将表放在select和from之间的情况:
(SELECT count(id) FROM yx_task_customer c WHERE t.uid = c.task_uid) customerCount,
(SELECT count(id) FROM yx_task_customer c WHERE t.uid = c.task_uid AND c.is_visit = '0') noVisitCount,
SELECT uid,
task_name as taskName,
task_no as taskNo,
CASE
WHEN task_status = '3' THEN '3'
WHEN noVisitCount = 0 THEN '2'
WHEN noVisitCount > 0 and NOW() > date_add(end_date, interval 1 day) THEN '4'
ELSE '1' END taskStatus,
end_date as endDate,
create_by as createBy,
create_time as createTime,
taskSource,
customerCount,
noVisitCount,
needAllotCount,
IF(needAllotCount > 0, 1, 0) as isNeedAllot,
floor((customerCount - noVisitCount) / customerCount * 100) as taskProgress
FROM (SELECT t.uid,
t.task_name,
t.task_no,
t.task_status,
t.end_date,
t.create_by,
t.create_time,
t.is_sup_bank_create as taskSource,
(SELECT count(id) FROM yx_task_customer c WHERE t.uid = c.task_uid) customerCount,
(SELECT count(id) FROM yx_task_customer c WHERE t.uid = c.task_uid AND c.is_visit = '0') noVisitCount,
0 as needAllotCount
FROM yx_task t) tt
where customerCount > 0
and task_status = '3'
and taskSource = ?
order by create_time desc
LIMIT ?