IF @source = @target RETURN ELSE BEGIN IF @source < @target SET @step = 1 ELSE SET @step = - 1 SELECT @s_id = id FROM howtos WHERE pos = @source WHILE @source <> @target BEGIN SET @t_pos = @source + @step SET @s_pos = @source SELECT @t_id = id FROM howtos WHERE pos = @t_pos UPDATE howtos SET pos = @s_pos WHERE id = @t_id UPDATE howtos SET pos = @t_pos WHERE id = @s_id SET @source = @t_pos END END