【发布时间】:2016-08-10 15:08:23
【问题描述】:
我一直在尝试找出基于文件内容(在我的情况下为 CSV)从表中删除多行的最佳方法,尽管我对可能的最佳做法有困难。我正在创建的 CSV 将包含要从主表中删除的键。
我想出了将这些键插入到临时表中的想法,然后在该数据集上运行光标以删除主表中的每条记录。我只是担心这比我错过的其他一些做事方式慢得多。我的光标在下面:
DECLARE @keyTemp char(10)
DECLARE cursorName CURSOR
LOCAL SCROLL STATIC
FOR
SELECT * FROM TestTemp
OPEN cursorName
FETCH NEXT FROM cursorName
INTO @keyTemp
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM Test WHERE Key1 = @keyTemp
FETCH NEXT FROM cursorName
INTO @keyTemp
END
CLOSE cursorName
DEALLOCATE cursorName
有没有更好的方法来做到这一点?
【问题讨论】:
-
您可以通过加入删除。 stackoverflow.com/questions/16481379/…
-
是的。不要使用光标。
标签: sql sql-server tsql csv