select area_id, parent_id, ancestors, area_code, area_name, area_desc, order_num, del_flag, create_by, create_time, update_by, update_time, remark from t_visit_area select a.area_id, a.parent_id, p.area_name as parent_name, a.area_code, a.area_name, a.area_desc, a.order_num, a.create_time from t_visit_area a left join t_visit_area p on p.area_id = a.parent_id and p.del_flag = '0' insert into t_visit_area ( parent_id, ancestors, area_code, area_name, area_desc, order_num, create_by, create_time ) values ( #{parentId}, #{ancestors}, #{areaCode}, #{areaName}, #{areaDesc}, #{orderNum}, #{createBy}, sysdate() ) update t_visit_area set parent_id = #{parentId}, ancestors = #{ancestors}, area_code = #{areaCode}, area_name = #{areaName}, area_desc = #{areaDesc}, order_num = #{orderNum}, update_by = #{updateBy}, update_time = sysdate() where area_id = #{areaId} and del_flag = '0' update t_visit_area set ancestors = replace(ancestors, #{oldAncestors}, #{newAncestors}), update_time = sysdate() where del_flag = '0' and find_in_set(#{areaId}, ancestors) update t_visit_area set del_flag = '1', update_by = #{updateBy}, update_time = sysdate() where del_flag = '0' and ( area_id in #{areaId} or find_in_set(#{areaId}, ancestors) )