今天接到一个任务,把表A中的字段name为“xx”的数据备份,然后删除掉表A的这些数据。已成功完成任务,作此纪录,用以备忘。
一、方案与实现
- 假设存在与表A结构相同的表B。
- 方案:首先,查询表A中的字段name为“xx”的数据插入到表B,再把表A中的字段name为“xx”的数据删除。
- 实现:sql如下所示:
INSERT INTO B SELECT * FROM A WHERE name='xx';
DELETE FROM A WHERE name='xx';
- 假设不存在与表A结构相同的表B。这里有两种解决方案。
- 方案1:首先,查询表A中的字段name为“xx”的数据,把表A的结构和数据直接用来创建表B,再把表A中的字段name为“xx”的数据删除。
- 实现1:sql如下所示:
CREATE TABLE B AS SELECT * FROM A WHERE name='xx';
DELETE FROM A WHERE name='xx';
- 方案2:首先,先创建和表A一样结构的表B,再执行上面1的方案,把查询表A中的字段name为“xx”的数据插入到表B,最后把表A中的字段name为“xx”的数据删除。
- 实现2:sql如下所示:第一条脚本中的条件
1=2
的目的是:让查询表A的数据为空,该条脚本的作用相当于copy表A的结构。
CREATE TABLE B AS SELECT * FROM A WHERE 1=2;
SELECT INTO B AS SELECT * FROM A WHERE name='xx';
DELETE FROM A WHERE name='xx';
记录到此结束,欢迎大家评论交流。如记录有误,请评论指出,谢谢。