在不使用选择查询的情况下更新同一表中的表的值

时间:2011-11-18 15:40:31

标签: sql sql-server-2008

我的要求
 在不使用选择查询的情况下更新同一表中的表的值     此查询不会影响任何行。     我的目标:Update val2 of #table where slno=1 with the value of val2 of slno=2       没有这种方法还有其他方法

 Declare @val2 nvarchar(50)
  select @val2=val2  from #table where slno=2
  update #table set val2=@val2 where slno=1


    create table #table 
    (
     slno int identity(1,1),
     val nvarchar(50),
     val2 nvarchar(50)
    )

    insert into #table(val,val2)values('1',newID())
    insert into #table(val,val2)values('1',newID())
    insert into #table(val,val2)values('1',newID()) 

    select * from #table 

    update #table set val2=T.val2 
      from #table T where slno=1 and T.slno=2



      drop table #table

我在表格中有很多记录。 因此,如果我选择并更新它可能会影响性能。

1 个答案:

答案 0 :(得分:0)

请提供更多信息。

你桌上只有2行吗?

为什么需要这种更新?

我想,你的数据库结构是错误的,但我无法准确说出,直到你解释为什么需要它。

无论如何,如果不使用select,我可以建议一种糟糕的方法。你可以自己加入桌子。添加专栏会更好,但如果你没有,你应该怎么做

    UPDATE T1
    SET T1.val2 = T2.val2
    FROM #table T1 INNER JOIN #table T2 
       ON T1.slno = 1 AND T2.slno = 2 
相关问题