mysql特殊的一些情况

文章详细介绍了如何在MySQL中进行复杂的SQL查询,包括在SELECT和FROM之间放置表以进行子查询,计算不同条件下的计数,以及使用CASE语句根据特定条件确定新的列值。查询涉及到的任务状态检查、时间比较和数据百分比计算展示了数据库操作的高级用法。
摘要由CSDN通过智能技术生成

注意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 ?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值