我需要从一个表中复制3列(具有值)到另一个表(该表将被创建为新的)并且还需要在新形成的表格。只有在一个SQL查询中可能吗?将数据从一个表复制到另一个表中并同时添加另一列
我想这可能是一个答案 -
CREATE TABLE NEW_TBL(Col1,Col2,Col3,New_Col) AS SELECT Col1,Col2,Col3 FROM OLD_TBL
但困惑是如何分配新列的数据类型?只有一个SQL语句可能吗?
我需要从一个表中复制3列(具有值)到另一个表(该表将被创建为新的)并且还需要在新形成的表格。只有在一个SQL查询中可能吗?将数据从一个表复制到另一个表中并同时添加另一列
我想这可能是一个答案 -
CREATE TABLE NEW_TBL(Col1,Col2,Col3,New_Col) AS SELECT Col1,Col2,Col3 FROM OLD_TBL
但困惑是如何分配新列的数据类型?只有一个SQL语句可能吗?
这里使用一个例子create table as
语法:
CREATE TABLE NEW_TBL AS
SELECT Col1, Col2, Col3, 'Newcol' as Col4
FROM OLD_TBL;
要分配数据类型,使用cast()
或convert()
得到你想要的类型:
CREATE TABLE NEW_TBL AS
SELECT Col1, Col2, Col3, cast('Newcol' as varchar(255) as Col4,
cast(123 as decimal(18, 2)) as col4
FROM OLD_TBL;
由也可以直接将列添加到旧表中:
alter table old_tbl add col4 varchar(255);
如果您愿意,您可以在那里更新值。
你没有提到你的数据库。
这里是MS SQL
SELECT Col1,Col2,Col3,'text field' as NEW_COL INTO NEW_TBL FROM OLD_TBL;
这个查询的例子将创建新表NEW_TBL
和OLD_TBL
额外的文本字段NEW_COL添加的所有数据。新字段的类型取决于常量类型,例如,如果您需要INT类型,则可以使用0
而不是'text field'
常数。
我建议你总是将CAST或CONVERT新的字段值设为明确的数据类型和大小。例如。 'CONVERT(VARCHAR(20),'text field')' –
是的,我忘了实际上 - 数据库是使用PL/SQL的Oracle!无论如何非常感谢 - – MetaRs
你使用了哪个数据库?并不是所有的数据库都支持'create table as'语法。 –