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
我知道如何将数据从一列复制到另一列:
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