使用 `INSERT INTO table_name SELECT * FROM table_name` 这种方式

简介: 使用 `INSERT INTO table_name SELECT * FROM table_name` 这种方式

在 OceanBase 数据库中,如果你使用 INSERT INTO table_name SELECT * FROM table_name 这种方式,那么只有当两个查询条件完全相同时,才会复制所有的列。如果存在任何差异,那么结果集只包含那些在这两个查询中都被选择的列。

因此,如果你的两条记录在某个字段上存在差异,可能会导致某些字段被忽略。在这种情况下,你需要明确指定需要复制的字段。例如:

INSERT INTO new_table (id, name, age, number)
SELECT id, name, age, number FROM old_table

这样,只有当 old_tablenew_tableid, name, age, number 这四个字段都在两个查询中都存在时,它们的值才会被复制。

至于你提到的 number 字段在 INSERT 操作后变为 NULL 的问题,可能是因为你在 SELECT 语句中没有选择 number 字段,或者在 INSERT 语句中 number 字段的列名拼写错误。请确认你的 SELECT 语句和 INSERT 语句中 number 字段的写法是否正确。

目录
相关文章
|
索引
不推荐SELECT * FROM table原因
根据非索引查询 :B+树的叶子节点放数据表行数据,叶子节点存放主键,如果想获得行数据信息,则需要再跑到主键索引去拿数据,这叫回表,速度慢。但不管是主键还是非主键索引,他们的叶子结点数据都是有序的。比如在主键索引中,这些数据是根据主键id的大小,从小到大,进行排序的。**1.**根据索引查询 :B+树的父节点放索引数据,速度快,叶子(父)节点会存放完整的行数据西信息。
374 0
|
1月前
|
前端开发
`<table>`
【10月更文挑战第17天】
38 1
|
6月前
|
存储 SQL 关系型数据库
CREATE TABLE语句
在MySQL中,使用CREATE TABLE语句来创建表。你需要指定表名和列的定义,包括列名、数据类型以及约束等,结合实际存储和上一课学习的数据类型选取合适的。创建一个book_types表
213 0
|
数据库 OceanBase
INSERT INTO table_name SELECT * FROM table_name
INSERT INTO table_name SELECT * FROM table_name
63 1
|
JavaScript 前端开发 数据可视化
vxe-table
vxe-table
745 0
vxe-table
|
SQL 数据库
CREATE TABLE 语句
CREATE TABLE 语句
129 1
|
SQL Java 关系型数据库
SQL 语法--表特定语句--create、insert、desc | 学习笔记
快速学习 SQL 语法--表特定语句--create、insert、desc
235 0
SQL 语法--表特定语句--create、insert、desc | 学习笔记
瞬表——Ephemeron Table
瞬表——Ephemeron Table
163 0
Stones on the Table
Stones on the Table
129 0
Stones on the Table
|
关系型数据库 MySQL 开发者
explain 之 select-type 和 table 介绍|学习笔记
快速学习 explain 之 select-type 和 table 介绍
812 0