SQL 剪切并粘贴到列

SQL CUT and PASTE to COLUMN

我知道如何将数据从一列复制到另一列:

UPDATE table SET columnB = columnA

这很酷,但我想批处理此命令(我知道如何执行此操作),因为我需要更新几 (160) 百万条记录。问题是,如果我 select TOP(1000)(每批次),则无法知道我处理了前 1000 个(删除后,TOP(1000) 将不断变化,因为你删除了它们每次都有一个新的顶部)。我不能用一个简单的 WHERE 子句来处理这个问题,因为 columnB 中的值范围从真值到 'NULL' 到 '0',A 列也是如此。

基本上,我想遍历每条记录,检查 columnA 有点像:

WHERE columnA <> NULL

然后用这个 columnA 的数据设置 columnB,然后以某种方式将 columnA 设置为 NULL,所以下一批将跳过这个记录(因为 columnA <> NULL 是假的)。

总结性问题:如何在用 columnA 中的数据更新 columnB 后将 columnA 设置为 NULL?

您可以使用:

UPDATE   TableName
SET      Col2 = Col1,
         Col1 = NULL
WHERE    Col1 IS NOT NULL