在子查询中丢失我的表...问题是什么?

时间:2013-03-01 17:41:45

标签: sql sql-server-2008

我已经设置了两个表,这是设置的基本示例:

 Table1           Table2
 ____________     ____________
|id   |date  |   |id   |stuff |
|_____|______|   |_____|______|

所以他们都有一个id列。我试图以这种方式更新table1:

update Table1
set [date] = (select [stuff] 
              from Table2 
              where Table2.id = id)

但是,在where Table2.id = id行中,它使用Table2中的ID字段,而不是使用Table1中的ID字段。

当我尝试where Table2.id = Table1.id时,我收到错误消息。如何跟踪Table1的每行ID以在Table2的子查询中使用?

3 个答案:

答案 0 :(得分:4)

您需要将内部查询中的id引用到表1。 这应该可以解决您的问题:

update Table1
set Table1.[date] = (select Table2.[stuff] 
                     from Table2
                     where Table2.id = Table1.id)

答案 1 :(得分:1)

使用Join

尝试此操作
Update t1 set t1.[date] = t2.[stuff]
from Table1 t1 
      join Table2 t2 on t1.id = t2.id

答案 2 :(得分:1)

这是加入版本,

update  a
set     a.[date] = b.[stuff]
FROM    Table1  a
        INNER JOIN Table2 b
           ON a.ID = b.ID