distinct dt_define_info.id, dt_define_info.code, dt_define_info.name, dt_define_info.alias_code, dt_define_info.alias_name, dt_define_type.code as class_code, dt_define_info.group_code, dt_define_info.project_id,dt_define_info.category,dt_define_info.first_tag, dt_define_info.second_tag, dt_define_info.priority,dt_define_info.input_mode, dt_define_info.unit,dt_define_info.data_type,dt_define_info.is_multiple,dt_define_info.is_region, dt_define_info.formater,dt_define_info.data_source, dt_define_info.remark,dt_define_info.sub_flag, dt_define_info.weak_point,dt_define_info.show_order,dt_define_info.version,dt_define_info.creator, dt_define_info.creation_time,dt_define_info.modifier,dt_define_info.modified_time, dt_define_info.valid,dt_define_info.ts (case when dt_define_info.class_code in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material') and dt_define_info.project_id = '0' then 100 when dt_define_info.class_code in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material') and dt_define_info.project_id = dt_define_info.group_code then 200 when dt_define_info.class_code in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material') and dt_define_info.project_id != dt_define_info.group_code then 300 when dt_define_info.class_code not in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material') and dt_define_info.project_id = '0' then 400 when dt_define_info.class_code not in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material') and dt_define_info.project_id = dt_define_info.group_code then 500 when dt_define_info.class_code not in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material') and dt_define_info.project_id != dt_define_info.group_code then 600 else 0 end) select from dt_define_type inner join dt_define_info on dt_define_info.class_code in (dt_define_type.code, dt_define_type.obj_type) and dt_define_type.valid = 1 and dt_define_info.valid = 1 #{projectId} where exists(select 1 from ( select dt_define_type.code class_code, dt_define_info.code code, max() max_show_level from dt_define_type inner join dt_define_info on dt_define_info.class_code in (dt_define_type.code, dt_define_type.obj_type) and dt_define_type.valid = 1 and dt_define_info.valid = 1 #{projectId} group by dt_define_type.code, dt_define_info.code ) T where T.class_code = dt_define_type.code and T.code = dt_define_info.code and T.max_show_level = )