2013-04-10 237 views
0

我試圖用來自另一個表字段的輸入插入到一個字段中。雖然這是許多數據庫引擎完全可行的,從另一個表中插入值

我有以下字段,

新表模式

  • 名稱
  • Industryid(INT)
  • Locationid(INT)

但實際記錄像,

  • XXXX
  • TEXT(VARCHAR)
  • TEXT(VARCHAR)

不過,我想這兩個Industryid和Locationid用的ID從另一臺工業場所。

我有另外2臺用於

工業

  • 編號
  • 名稱

位置

  • 編號
  • 名稱

我的查詢,

select'insert into organizations(name,industryid,locationid) 
values 
('''+ 
Nameofthecompany+''','+ 
Isnull(industrytype,'Null')+','+ 
ISNULL(Location,'Null')+')' 
from Organization` 

結果

insert into organizations(name,industryid,locationid) 
values 
('Swamy',Telcom,Chennai) 

預期結果

insert into organizations(name,industryid,locationid) 
values 
('Swamy',12,150) 
+3

表結構???插入查詢?請編輯你的問題。 – Freelancer 2013-04-10 05:02:43

回答

2

如果您的當前/實際記錄已存在於名爲Organization的表中,如圖所示查詢時,您可以使用此方法來填充新的Organizations表:

INSERT INTO Organizations(name, IndustryId, LocationId) 
SELECT o.Nameofthecompany, i.Id, l.Id 
FROM Organization AS o 
LEFT JOIN Industries AS i ON o.industrytype = i.Name 
LEFT JOIN Location AS l ON o.Location = l.Name 

這需要現有名稱,加入到你的參考表(IndustriesLocations)和相應的文本值獲取Id值。

LEFT JOIN將從組織中帶回所有名稱,但不要求它們在參考表中具有匹配的行業和位置。

+0

當我執行這一個時,我沒有得到任何更改。爲什麼? – PoliDev 2013-04-10 05:57:35

+0

我用內連接來代替左連接。那麼它正在工作。 – PoliDev 2013-04-10 07:04:49

+0

@AngDei我已經更新了我的答案,並有LEFT JOIN。這消除了讓行業類型和位置與您的參考表中的值匹配的要求。 – 2013-04-10 12:48:33

0

你可以做這樣的事情:即SELECT INTO

SELECT Col1, Col2 
INTO TestTable 
FROM OriginalTable 
WHERE Conditions 

公告僅適用,如果INTO子句中指定的表不存在

或者:

INSERT INTO TestTable (Col1, Col2) 
SELECT Col1, Col2 
FROM OriginalTable 
WHERE Conditions 
相關問題