SQL Server:使用FK Constraint复制表数据

时间:2015-06-16 12:40:28

标签: sql-server

我从Excel将数据导入SQL Server数据库。

将数据插入到未定义主键的tmptable中。

tmptable

course, trainer, jockey, horse, won, pos, date

我想将数据从tmptable复制到另一个包含主键列的表mastertable中。

mastertable

coursefk, trainerfk, jockeyfk, horsefk, won, pos, date. 

后缀为'fk'的列指的是其他各个表。

我希望在insert into mastertable期间,脚本会从course获取tmptable列的值,并参考表Courses以获取适当的值放入mastertable。已创建表之间的主键和外键关系,但我无法创建可实现我想要的脚本。

任何人都可以帮忙。

1 个答案:

答案 0 :(得分:2)

您可以join tmptable使用其他外键表。

像这样。

INSERT INTO mastertable(coursefk, trainerfk, jockeyfk, horsefk, won, pos, date)
SELECT mastercourse.coursefk, mastertrainer.trainerfk, masterjockey.jockeyfk, masterhorse.horsefk, won, pos, date
FROM tmptable
LEFT JOIN mastercourse ON mastercourse.course = tmptable.course 
LEFT JOIN mastertrainer ON mastertrainer.trainer = tmptable.trainer
LEFT JOIN masterjockey ON masterjockey.jockey = tmptable.jockey
LEFT JOIN masterhorse ON masterhorse.horse = tmptable.horse

注意:由于我不知道其他FK表的结构,请替换并使用适当的表名和列名。