ancestry, descendants DELETE FROM aps_resource_relation WHERE descendants IN (SELECT temp.descendants FROM (SELECT descendants FROM aps_resource_relation WHERE ancestry = #{descendants}) temp) AND ancestry IN (SELECT temp.ancestry FROM (SELECT ancestry FROM aps_resource_relation WHERE descendants = #{descendants} AND ancestry != descendants) temp); INSERT INTO aps_resource_relation (ancestry, descendants) SELECT a.ancestry, b.descendants FROM aps_resource_relation a CROSS JOIN aps_resource_relation b WHERE a.descendants = #{ancestry} AND b.ancestry = #{descendants}; DELETE FROM aps_resource_relation WHERE descendants IN ( SELECT temp.descendants FROM (SELECT descendants FROM aps_resource_relation WHERE ancestry = #{id}) temp)