Microsoft SQL Server 将数据移到表中(假设唯一键方法)
示例
要移动数据,请先将其插入目标中,然后删除从源表中插入的所有内容。这不是正常的SQL操作,但可能会有所启发
您插入了什么?通常,在数据库中,您需要有一个或多个可用于唯一标识行的列,因此我们将假定并加以利用。
该语句选择一些行
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
首先,将它们插入目标表:
INSERT INTO TargetTable (Key1, Key2, Column3, Column4) SELECT Key1, Key2, Column3, Column4 FROM MyTable;
现在假设两个表中的记录是独一无二的Key1,Key2我们可以用它来查找和出源表中删除数据
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);这只会正常工作,如果Key1,Key2两个表中唯一
最后,我们不希望这项工作完成一半。如果我们将其包装在事务中,则所有数据将被移动,或者什么都不会发生。这样可以确保我们不会在其中插入数据,然后发现自己无法从源中删除数据。
BEGIN TRAN;
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
COMMIT TRAN;
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练