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)
DELETE
FROM sys_dept_relation
WHERE descendant IN (
SELECT temp.descendant
FROM (
SELECT descendant
FROM sys_dept_relation
WHERE ancestor = #{id}
) 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}