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}