从SQL中的SELECT查询更新

时间:2013-12-14 11:43:02

标签: sql sql-server-2008

我有两张桌子。表格a使用表b中的引用,并使用表a中的值更新表b

UPDATE
    a
SET
    a.StructureTypeRef = b.StructureTypeRef
FROM
    Template_Structure as a
INNER JOIN
    dbo_StructureType as b
ON
    a.StructureType = b.StructureType

通常情况下,我可以找到与b字段匹配的'structuretype'引用,但在这种情况下,我想将b.StructureTypeRef插入a.StructureType = 0 and b.StructureType = 'External Areas',作为'External Areas'的对应参考{1}}不是0.我该怎么做?

提前致谢: - )

2 个答案:

答案 0 :(得分:0)

我认为你正在尝试做这样的事情,虽然你在这里问的是什么但不是很清楚

UPDATE Template_Structure
SET StructureTypeRef = (SELECT StructureTypeRef
                        FROM dbo_StructureType
                        WHERE StructureType = 'External Areas')
WHERE StructureType = 0

答案 1 :(得分:0)

UPDATE a
    SET StructureTypeRef = b.StructureTypeRef
FROM Template_Structure a
JOIN StructureTypeRef b ON 1=1 AND b.StructureType = 'External Areas'
WHERE a.StructureType = 0

说明:1=1没用,但是,这只是表示两个表之间没有“直接”连接的方法。等效请求:

UPDATE a
    SET StructureTypeRef = b.StructureTypeRef
FROM Template_Structure a
CROSS JOIN StructureTypeRef b
WHERE a.StructureType = 0 and b.StructureType = 'External Areas'

这两个请求都有效,因为正如业主回答我的那样,表b中有一行,其中StructureType ='External Areas'。