根据另一个表SQL Server的结果更新行的值

时间:2016-12-02 21:14:39

标签: sql-server

表一:

IdOne | IdTwo
------+------
32423 |  435
2343  |  345
2344  |  45

表1从另外两个表中获取idOne和idTwo。 IdOne存储场地的ID。无论此场地是否有效,它都可以从商店获取其ID。用户可以停用场地并激活它。有一些重复指向相同的地点,我想将重复的值(在表一中)设置为我从存储此信息的表中获得的活动场所的值。

我尝试了子查询,相关查询,但我还没有完成。任何帮助将非常感激。

编辑:

对于措辞严厉的问题,我们深表歉意。我有点疯狂。这是正确的问题。

我有两张桌子。多个表将表演与场地联系起来。还有一个场地表。

多对多表格具有布局:

performance_venue 
(
    performanceId,
    venueId
)

场地表的布局如下:

venue 
(
    uniqueId,
    venueTypeId,
    active
)

它们与venue.uniqueId = performance_venue.venueId相关联。 performance_venue中有一些实例引用venueactive值为0的实例。有效值为venues的这些0有一个更新的venue实例,其中active值为1并且具有相同的venueTypeId 。因此,我想要做的是更新所有performance_venue个实例,以引用venue值为active的{​​{1}}个实例,如果他们当前指的是1实例,其有效值为venue

这是一个例子。

performance_venue

0

场地

performanceId  | venueId
---------------+--------
1              | 1
2              | 2
3              | 3

更新后的预期结果

performance_venue

uniqueId | venueTypeId | active
---------+-------------+-------
1        |  1          | 0
2        |  1          | 1
3        |  2          | 1

1 个答案:

答案 0 :(得分:0)

UPDATE t1
SET t1.IdTwo = (SELECT top 1 t2.IdTwo FROM TableTwo t2 WHERE t2.IdOne = t1.IdOne AND t2.Active = 1)
FROM TableOne t1