[英]Copying Data from one table into another and simultaneously add another column
我需要将 3 列(带值)从一个表复制到另一个表(该表将被创建为新表),并且还需要在新形成的表中添加一个额外的列。 是否只能在一个 sql 查询中使用?
我以为这可能是一个答案-
CREATE TABLE NEW_TBL(Col1,Col2,Col3,New_Col) AS SELECT Col1,Col2,Col3 FROM OLD_TBL
但令人困惑的是如何分配新列的数据类型? 是否可以只使用一个 SQL 语句?
你没有提到你的数据库。
这是 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'
常量。
这是一个使用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);
如果您愿意,您可以在那里更新该值。
今天,我需要使用带有外键约束的新 NOT NULL uuid 列来扩展product
表。 因此,我必须为新列指定现有图像的 uuid。 我是这样的:
INSERT INTO product
(
SELECT
product_id,
product_name,
'32b295g3-1337-4792-b1c4-9e3412b07982' as product_image_id
FROM oldproduct
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.