SELECT p.* FROM ( SELECT p.*, l.serial_no, cu.`name` customer_name, bo.nickname business_owner_name, toa.nickname technical_owner_a_name, tob.nickname technical_owner_b_name, ifnull( pc.comment_num, 0 ) comment_num, ifnull( pl.apply_count, 0 ) apply_count FROM crm_project p LEFT JOIN crm_customer cu ON p.customer_id = cu.id AND cu.deleted = 0 LEFT JOIN system_users bo ON p.business_owner = bo.id AND bo.deleted = 0 LEFT JOIN system_users toa ON p.technical_owner_a = toa.id AND toa.deleted = 0 LEFT JOIN system_users tob ON p.technical_owner_b = tob.id AND tob.deleted = 0 LEFT JOIN ( SELECT project_id, GROUP_CONCAT( serial_no ) serial_no FROM crm_license_server WHERE deleted = 0 GROUP BY project_id ) l ON p.id = l.project_id LEFT JOIN ( SELECT c.project_id, count( c.id ) comment_num FROM crm_comment c WHERE c.deleted = 0 GROUP BY c.project_id ) pc ON p.id = pc.project_id LEFT JOIN ( SELECT l.project_id, count( lh.id ) + count(l.serial_no) apply_count FROM crm_license_server l LEFT JOIN crm_license_server_history lh ON l.id = lh.license_id AND lh.deleted = 0 WHERE l.deleted = 0 GROUP BY l.project_id ) pl ON p.id = pl.project_id WHERE p.deleted = 0 ) p AND p.customer_id = #{query.customerId} AND p.name LIKE CONCAT('%',#{query.name},'%') AND p.code LIKE CONCAT('%',#{query.code },'%') AND p.contract_code LIKE CONCAT('%',#{query.contractCode},'%') AND p.business_status = #{query.businessStatus} AND p.business_owner = #{query.businessOwner} AND p.customer_owner LIKE CONCAT('%',#{query.customerOwner},'%') AND p.start_time BETWEEN #{query.startTime[0]} AND #{query.startTime[1]} AND p.end_time BETWEEN #{query.endTime[0]} AND #{query.endTime[1]} AND p.create_time BETWEEN #{query.createTime[0]} AND #{query.createTime[1]} AND p.status = #{query.status} AND p.env_info LIKE CONCAT('%',#{query.envInfo},'%') AND p.serial_no LIKE CONCAT('%',#{query.serialNo},'%') AND (p.technical_owner_a = #{query.technicalOwner} OR p.technical_owner_b = #{query.technicalOwner} OR p.technical_owner_c = #{query.technicalOwner}) ORDER BY ${query.sortField} ${query.sortOrder} ORDER BY p.create_time DESC