SQL查询从一个表创建多对一表?

时间:2011-10-05 21:03:39

标签: sql-server-2008

我有一张这样的表:

column1 column2
------- -------
key1    value1
key1    value2
key1    value3
key2    value4
key2    value5
key2    value6

我想创建以下两个表:

id column1
-- -------
1  key1
2  key2

key_id column2
------ -------
1      value1
1      value2
1      value3
2      value4
2      value5
2      value6

也就是说,我想将表拆分成两个新表之间的多对一关系。

如何编写SQL查询来执行此操作?

2 个答案:

答案 0 :(得分:3)

假设您的第一个新表中的id列是标识列:

INSERT INTO NewTable1
    (column1)
    SELECT DISTINCT column1
        FROM OldTable;

INSERT INTO NewTable2
    (key_id, column2)
    SELECT n1.id, o.column2
        FROM OldTable o
            INNER JOIN NewTable1 n1
                ON o.column1 = n1.column1;

答案 1 :(得分:-2)

为什么不使用php我的管理员并手动输入数据。它会为你编写php。

此外,每个表上的id字段必须始终唯一且自动递增。

您不能在主键中使用111 222