UPDATE instruct SET sort = #{sort} WHERE instruct_id = #{instructId} UPDATE instruct t JOIN ( SELECT instruct_id, (@rn := @rn + 1) AS rn FROM (SELECT * FROM instruct WHERE invocation_id = #{invocationId} ORDER BY sort) tmp, (SELECT @rn := 0) init ) r ON t.instruct_id = r.instruct_id SET t.sort = r.rn WHERE t.invocation_id = #{invocationId} UPDATE instruct SET sort = 0 WHERE instruct_id IN #{id} UPDATE instruct SET sort = sort + 1 WHERE invocation_id = #{invocationId} AND sort >= #{sort} and instruct_id !=#{instructId} UPDATE instruct SET sort = sort - 1 WHERE invocation_id = #{invocationId} AND sort >= #{oldSort} AND sort <= #{newSort} AND instruct_id != #{instructId} UPDATE instruct SET sort = sort + 1 WHERE invocation_id = #{invocationId} AND sort >= #{newSort} AND sort <= #{oldSort} AND instruct_id != #{instructId}