WITH RECURSIVE area_tree AS ( SELECT id FROM closed_area WHERE id = #{params.closedAreaId} AND delete_enum = 'FALSE' UNION ALL SELECT ca.id FROM closed_area ca INNER JOIN area_tree at ON ca.parent_id = at.id WHERE ca.delete_enum = 'FALSE' ) SELECT har.* FROM hk_access_record har INNER JOIN mkmj_gate mg ON har.door_index_code = mg.hk_index_code AND mg.delete_enum = 'FALSE' INNER JOIN mkmj m ON mg.mkmj_id = m.id AND m.delete_enum = 'FALSE' INNER JOIN area_tree at ON m.closed_area_id = at.id WHERE har.delete_enum = 'FALSE' AND har.person_name LIKE CONCAT('%', #{params.personName}, '%') AND har.event_time >= CONCAT(#{params.startTime}, ' 00:00:00') AND har.event_time <= CONCAT(#{params.endTime}, ' 23:59:59') WITH RECURSIVE area_tree AS ( SELECT id FROM closed_area WHERE id = #{params.closedAreaId} AND delete_enum = 'FALSE' UNION ALL SELECT ca.id FROM closed_area ca INNER JOIN area_tree at ON ca.parent_id = at.id WHERE ca.delete_enum = 'FALSE' ) SELECT hvar.* FROM hk_vehicle_access_record hvar INNER JOIN mkmj_gate mg ON hvar.lane_index_code = mg.hk_index_code AND mg.delete_enum = 'FALSE' INNER JOIN mkmj m ON mg.mkmj_id = m.id AND m.delete_enum = 'FALSE' INNER JOIN area_tree at ON m.closed_area_id = at.id WHERE hvar.delete_enum = 'FALSE' AND hvar.plate_no LIKE CONCAT('%', #{params.vehiclePlateNumber}, '%') AND ( OR ( hvar.enter_or_exit = 0 AND hvar.event_time >= CONCAT(#{params.arrivalStartTime}, ' 00:00:00') AND hvar.event_time <= CONCAT(#{params.arrivalEndTime}, ' 23:59:59') ) OR ( hvar.enter_or_exit = 1 AND hvar.event_time >= CONCAT(#{params.departureStartTime}, ' 00:00:00') AND hvar.event_time <= CONCAT(#{params.departureEndTime}, ' 23:59:59') ) )