如何将SQL Server列从一个表拆分为单独的表?

时间:2014-08-19 21:03:29

标签: sql sql-server

我有一个包含A, B, C, D,列和E列的表格。

我想拆分表但保持表之间的关系。

是否有一种简单的方法可以将表ABCDE分成2个表uABCuDE并引入一个连接表中各行的唯一标识符?最终目标是建立一对多关系并删除重复数据。

3 个答案:

答案 0 :(得分:0)

CREATE TABLE uABC
(
 u  [datatype],
 A  [datatype],
 B  [datatype],
 C  [datatype], 
)
GO

CREATE TABLE uDE
(
 u  [datatype],
 D  [datatype],
 E  [datatype], 
)
GO

INSERT INTO uABC (u, A, B, C)
SELECT u, A, B, C
FROM  uABCDE
GO

INSERT INTO uDE(u,D,E)
SELECT u,D,E
FROM  uABCDE
GO

答案 1 :(得分:0)

如果该表上已存在主键,则可以将主键放在两个表上。

如果A列是主键......那么

`Table1`
A, B, C

`Table2`
A, D, E

或者,您可以在表格上添加代理键以创建关系。

答案 2 :(得分:0)

假设ABC部分发生的重复次数最多:

CREATE TABLE ABC
(
 id [int] PRIMARY KEY NOT NULL IDENTITY(1,1),
 A  [datatype],
 B  [datatype],
 C  [datatype], 
)
GO

CREATE TABLE DE
(
 id [int] PRIMARY KEY NOT NULL IDENTITY(1,1),
 D  [datatype],
 E  [datatype],
 ABC_id [int] NOT NULL REFERENCES ABC(id)
)
GO

INSERT INTO ABC (A, B, C)
SELECT DISTINCT A, B, C
FROM ABCDE
GO

INSERT INTO DE(D,E,ABC_id)
SELECT DISTINCT D,E, ABC.id
FROM ABC
JOIN ABCDE
ON ABC.A = ABCDE.A
AND ABC.B = ABCDE.B
AND ABC.C = ABCDE.C
GO