如何从现有表创建新表?

问题描述 投票:0回答:4
dbo.Profile_Updated
  (
     BusinessName VARCHAR,
     ContactName  VARCHAR,
     Address      VARCHAR,
     City         VARCHAR,
     State        VARCHAR,
     Postalcode   INT PRIMARY KEY,
     Phonenumber  VARCHAR
  ) 

这是我当前的表,但现在我想从现有的

Profile_Updated
表列创建新表,我的意思是新表 (
PostalDB
) 需要包含基于
City, State, Postalcode
表的列
Profile_Updated

有人可以帮助我吗?

提前致谢。

sql sql-server sql-server-2005
4个回答
3
投票

我想你只是说

SELECT INTO

SELECT City, State, Postalcode
  INTO dbo.PostalDB
  FROM dbo.Profile_Updated;

CREATE UNIQUE CLUSTERED INDEX p ON dbo.PostalDB(PostalCode);
CREATE INDEX ... -- you'll need to fill in these details

1
投票

你做事的顺序是错误的。 您应该首先创建 PostalDB 表并使用 PostalDBId 之类的名称作为主键进行填充。 PostalDBId 实际上应该毫无意义。 它不应该是邮政编码或类似的东西。

然后,您的 Profile_Updated 需要一个不同的主键,与 PostalDB 表无关。 您还需要另一个字段作为 PostalDb 表的外键。


0
投票

也许这会起作用:

SELECT DISTINCT City, State, Postalcode
INTO dbo.PostalDB
FROM dbo.Profile_Updated

INTO
子句将使用源中的属性创建一个新表。稍微进行网络搜索就会发现许多其他可能的解决方案。


0
投票

您可以使用 SELECT INTO 语句基于现有表创建新表。

SELECT City, State, Postalcode
INTO PostalDB
FROM Profile_Updated

这将创建一个名为 PostalDB新表,其中包含 CityStatePostalcode 列,并使用 Profile_Updated 表中相应列的数据填充该表。

或者,您可以将 CREATE TABLE 语句与 SELECT 语句结合使用来获得相同的结果:

CREATE TABLE PostalDB
(
    City VARCHAR,
    State VARCHAR,
    Postalcode INT
)

INSERT INTO PostalDB (City, State, Postalcode)
SELECT City, State, Postalcode
FROM Profile_Updated
    

请注意,在第一个示例中,新表中列的“数据类型”将根据原始表中列的数据类型“自动确定”。在第二个示例中,您需要显式指定数据类型。 此外,如果您想创建与原始表相同数据类型的表,您可以使用以下语法:

SELECT City, State, Postalcode INTO PostalDB FROM Profile_Updated WITH ( City VARCHAR, State VARCHAR, Postalcode INT ) 这将创建具有

指定数据类型
的表。

或者,您也可以使用以下语法:

CREATE TABLE PostalDB ( City VARCHAR, State VARCHAR, Postalcode INT ) INSERT INTO PostalDB (City, State, Postalcode) SELECT City, State, Postalcode FROM Profile_Updated 所有这些方法都将创建一个名为 PostalDB 的新表,其中包含 City、State 和 Postalcode 列,并使用 Profile_Updated 表中相应列的数据填充该表。

	

© www.soinside.com 2019 - 2024. All rights reserved.