> update MyTable
> set NewZip = ZipCode,
> @LastKey = NameKey
That may well work in this example, but it is not something I'd like to use for production use. You are relying on @LastKey being set to the last (alphabetically) NameKey value updated. Your updating a set, it could take any of the values from that set.