使用临时表数据中的两个外键插入SQL表

时间:2017-09-13 03:40:59

标签: sql foreign-keys sql-insert

我有一个表 Hub

enter image description here

和第二个表费率

enter image description here

在此,FromHubIdToHubId是来自Hub表的外键 我想在Rates表中的文件中添加一些数据。到目前为止我尝试过的是:  创建临时表并在其中插入值:

CREATE TABLE #Table
(FromHub varchar(30),
ToHub varchar(30),
Rate float,
rate40 float,
)

INSERT INTO #Table values('AUCKLAND','AUCKLAND',229.157325588818,341.973239724851),
('AUCKLAND','BLENHEIM',1825.03244430479,2738.13624934331),
('AUCKLAND','CHRISTCHURCH',1977.80399469734,2966.11840915988),
('AUCKLAND','DUNEDIN',2280.99676393793,3422.08272879301),
('AUCKLAND','GREYMOUTH',2432.59314855822,3650.06488860958),
('BLENHEIM','AUCKLAND',1520.66450929195,2280.99676393793),
('BLENHEIM','BLENHEIM',229.157325588818,341.973239724851),
('CHRISTCHURCH','AUCKLAND',1748.64666910852,2622.97000366278),
('CHRISTCHURCH','DUNEDIN',911.92863926627,1367.89295889941),
('CHRISTCHURCH','GREYMOUTH',685.121645221953,1028.27005071905),
:
:
:;

创建另一个临时表并尝试在其中插入值:

CREATE TABLE #Table1
(FromHubId uniqueidentifier,
ToHubId uniqueidentifier,
Rate float,
Rate40 float,
FromHub varchar(30),
ToHub varchar(30)
);

insert into #Table1
select h.HubId As FromHubId, h.HubId As ToHubId, t.Rate, t.Rate40, t.FromHub, t.ToHub
FROM #Table t JOIN Hub h ON
t.FromHub=h.Centre and t.ToHub=h.Centre;

select * from #Table1;

但是,它只插入FromHub和ToHub相同的值。我想插入所有值,即插入不同的From和To中心。

任何帮助将不胜感激。感谢.. !!

1 个答案:

答案 0 :(得分:1)

尝试:您必须使用表from分别加入toalias hubId,如下所示:

INSERT INTO #Table1
SELECT DISTINCT h.HubId As FromHubId, 
    h1.HubId As ToHubId, 
    t.Rate, 
    t.Rate40, 
    t.FromHub, 
    t.ToHub
FROM #Table t 
JOIN #Hub h ON t.FromHub=h.Centre 
JOIN #Hub h1 ON t.ToHub=h1.Centre;