0

我有 3 个表,其中两个是相关的(名称和性别):

Staging(id, name, gender)

Name(id, name genderID)

Gender(id, gender)

数据已Staging(id, name, gender)以非规范化的方式“转储”,现在我正在尝试对数据进行规范化。

我需要能够使用 t-sql 来执行以下操作

  1. 将暂存表中的名称插入到名称表中
  2. 从 Gender 表中获取 id 并作为外键插入到 Name 表中

问题是 Gender 和 Name 表与 Staging 无关,所以我试图理解这个事务应该如何工作的逻辑。

我的假设是我需要以某种方式插入带有某种子查询的INSERT INTO SELECT,但我只是迷路了。谢谢。

4

1 回答 1

3

是的,你需要INSERT INTO...SELECT. staging使用Gendervia 列加入表,gender这样您就可以获得ID.

INSERT INTO Name (ID, Name, GenderID)
SELECT  s.id, s.name, g.id
FROM    Staging s
        INNER JOIN Gender g
            ON s.gender = g.gender
于 2013-09-28T15:28:15.750 回答