• I think this could do the job...

    set nocount on

    SET ROWCOUNT 1000

    declare @rowcount int, @batchcount int, @rowsupdated int

    declare @LastKey nvarchar(341)

    select @rowcount = 1,@batchcount = 0, @rowsupdated = 0, @LastKey = ''

    while @rowcount > 0

    begin

      begin tran

         update MyTable

         set NewZip = ZipCode,

              @LastKey = NameKey

         where NewZip is NULL

            and NameKey >= @LastKey

         set @rowcount = @@rowcount

         select @rowsupdated = @rowsupdated + @rowcount

         if @rowcount > 0 select @batchcount = @batchcount + 1

      commit

    end

    *If NameKey were unique, we could use ">" instead of ">=" .