ancestor, descendant DELETE FROM sys_dept_relation WHERE descendant IN ( SELECT temp.descendant FROM ( SELECT descendant FROM sys_dept_relation WHERE ancestor = #{descendant} ) temp ) AND ancestor IN ( SELECT temp.ancestor FROM ( SELECT ancestor FROM sys_dept_relation WHERE descendant = #{descendant} AND ancestor != descendant ) temp ); INSERT INTO sys_dept_relation (ancestor, descendant) SELECT a.ancestor, b.descendant FROM sys_dept_relation a CROSS JOIN sys_dept_relation b WHERE a.descendant = #{ancestor} AND b.ancestor = #{descendant}; DELETE FROM sys_dept_relation WHERE descendant IN ( SELECT temp.descendant FROM ( SELECT descendant FROM sys_dept_relation WHERE ancestor = #{id} ) temp ) DELETE FROM sys_dept WHERE dept_id=#{id} delete from sys_dept_relation where descendant = #{descendant,jdbcType=BIGINT}