在 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_table 和 new_table 的 id, name, age, number 这四个字段都在两个查询中都存在时,它们的值才会被复制。
至于你提到的 number 字段在 INSERT 操作后变为 NULL 的问题,可能是因为你在 SELECT 语句中没有选择 number 字段,或者在 INSERT 语句中 number 字段的列名拼写错误。请确认你的 SELECT 语句和 INSERT 语句中 number 字段的写法是否正确。