CREATE TABLE new_HN_WARN_RECORD AS SELECT * FROM HN_WARN_RECORD;复制完表之后怎么把原表数据添加到新表
时间: 2025-01-03 13:44:31 浏览: 6
当你已经通过 `CREATE TABLE new_HN_WARN_RECORD AS SELECT * FROM HN_WARN_RECORD;` 语句复制了HN.Warn.Record表的内容,如果需要将原表(HN_WARN_RECORD)的数据追加到新表(new_HN_WARN_RECORD),你可以直接使用 `UNION ALL` 或者 `INSERT INTO ... SELECT` 结合 `APPEND` 或 `EXTEND` 子句。这里提供两种方法:
1. 使用 UNION ALL (追加模式)
```sql
INSERT INTO new_HN_WARN_RECORD
SELECT * FROM HN_WARN_RECORD
WHERE NOT EXISTS (SELECT 1 FROM new_HN_WARN_RECORD WHERE new_HN_WARN_RECORD.id = HN_WARN_RECORD.id); -- 检查新表中是否存在相同记录
```
2. 使用 INSERT INTO ... SELECT (追加模式)
```sql
INSERT INTO new_HN_WARN_RECORD
SELECT * FROM HN_WARN_RECORD t1
LEFT JOIN new_HN_WARN_RECORD t2 ON t1.id = t2.id
WHERE t2.id IS NULL; -- 只选择新表中不存在的记录
```
注意:`APPEND` 和 `EXTEND` 通常用于Oracle分区表的扩展,对于标准表,`UNION ALL` 和 `INSERT` 是更常见的解决方案。
阅读全文