插入另一个表中的值

时间:2013-04-10 05:01:43

标签: sql sql-server sql-server-2008 insert

我正在尝试使用另一个表字段的输入插入字段。虽然这对许多数据库引擎完全可行,但

我有以下字段,

新表架构

  • 名称
  • Industryid(int)的
  • Locationid(int)的

但实际记录如,

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

但我希望这两个Industryid和Locationid来自另一个表行业,地​​点的id。

我有另外两张表

行业

  • 编号
  • 名称

地点

  • 编号
  • 名称

我的查询是

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)

2 个答案:

答案 0 :(得分: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将从组织中恢复所有名称,但不要求他们在参考表中具有匹配的行业和位置。

答案 1 :(得分:0)

您可以这样做:

SELECT Col1, Col2
INTO TestTable
FROM OriginalTable
WHERE Conditions

请注意,只有在INTO子句中指定的表不存在时,SELECT INTO才有效

或者:

INSERT INTO TestTable (Col1, Col2)
SELECT Col1, Col2
FROM OriginalTable
WHERE Conditions