最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用帶關(guān)聯(lián)子查詢Update語(yǔ)句更新數(shù)據(jù)的方法

 更新時(shí)間:2014年08月17日 11:06:35   投稿:mdxy-dxy  
這篇文章主要介紹了利用帶關(guān)聯(lián)子查詢Update語(yǔ)句更新數(shù)據(jù)的方法,需要的朋友可以參考下

Update是T-sql中再簡(jiǎn)單不過(guò)的語(yǔ)句了,update table set column=expression [where condition],我們都會(huì)用到。但update的用法不僅于此,真正在開發(fā)的時(shí)候,靈活恰當(dāng)?shù)厥褂胾pdate可以達(dá)到事半功倍的效果。

假定有表Table1(a,b,c)和Table2(a,c),現(xiàn)在Table1中有些記錄字段c為null,要根據(jù)字段a在Table2中查找,取出字段a相等的字段c的值來(lái)更新Table1。一種常規(guī)的思路,通過(guò)游標(biāo)遍歷Table1中字段c為null的所有記錄,在循環(huán)體內(nèi)查找Table2并進(jìn)行更新,即用游標(biāo)Cursor的形式。測(cè)試sql語(yǔ)句如下:

--1.創(chuàng)建測(cè)試表
  create TABLE Table1
  (
    a varchar(10),
    b varchar(10),
    c varchar(10),
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
    (
      a ASC
    )
  ) ON [PRIMARY]

  create TABLE Table2
  (
    a varchar(10),
    c varchar(10),
    CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
    (
      a ASC
    )
  ) ON [PRIMARY]
  GO
  --2.創(chuàng)建測(cè)試數(shù)據(jù)
  Insert into Table1 values('趙','asds',null)
  Insert into Table1 values('錢','asds','100')
  Insert into Table1 values('孫','asds','80')
  Insert into Table1 values('李','asds',null)

  Insert into Table2 values('趙','90')
  Insert into Table2 values('錢','100')
  Insert into Table2 values('孫','80')
  Insert into Table2 values('李','95')
  GO
  select * from Table1

  --3.通過(guò)游標(biāo)方式更新
  declare @name varchar(10)
  declare @score varchar(10)
  declare mycursor cursor for select a from Table1 where c is null
  open mycursor
  fetch next from mycursor into @name
  while(@@fetch_status = 0)
  BEGIN
    select @score=c from Table2 where a=@name
    update Table1 set c = @score where a = @name
    fetch next from mycursor into @name  
  END
  close mycursor
  deallocate mycursor
  GO
  --4.顯示更新后的結(jié)果
  select * from Table1
  GO
  --5.刪除測(cè)試表
  drop TABLE Table1
  drop TABLE Table2

雖然用游標(biāo)可以實(shí)現(xiàn),但代碼看起來(lái)很復(fù)雜,其實(shí)用Update根據(jù)子關(guān)聯(lián)來(lái)更新只要一條語(yǔ)句就可以搞定了,測(cè)試代碼如下:

--1.創(chuàng)建測(cè)試表
  create TABLE Table1
  (
    a varchar(10),
    b varchar(10),
    c varchar(10),
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
    (
      a ASC
    )
  ) ON [PRIMARY]

  create TABLE Table2
  (
    a varchar(10),
    c varchar(10),
    CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
    (
      a ASC
    )
  ) ON [PRIMARY]
  GO
  --2.創(chuàng)建測(cè)試數(shù)據(jù)
  Insert into Table1 values('趙','asds',null)
  Insert into Table1 values('錢','asds','100')
  Insert into Table1 values('孫','asds','80')
  Insert into Table1 values('李','asds',null)

  Insert into Table2 values('趙','90')
  Insert into Table2 values('錢','100')
  Insert into Table2 values('孫','80')
  Insert into Table2 values('李','95')
  GO
  select * from Table1

  --3.通過(guò)Update方式更新
  Update Table1 set c = (select c from Table2 where a = Table1.a) where c is null
  GO

  --4.顯示更新后的結(jié)果
  select * from Table1
  GO
  --5.刪除測(cè)試表
  drop TABLE Table1
  drop TABLE Table2

參考資料:也許是被忽略的update語(yǔ)句,update 子查詢

相關(guān)文章

最新評(píng)論

五大连池市| 恭城| 东城区| 张家界市| 宁安市| 靖宇县| 彝良县| 拉萨市| 雷波县| 嫩江县| 曲阳县| 霍山县| 万载县| 乐陵市| 丰都县| 清镇市| 三穗县| 河源市| 望城县| 讷河市| 老河口市| 大邑县| 湘乡市| 曲阜市| 宁德市| 顺平县| 北流市| 朝阳区| 镶黄旗| 江安县| 乌苏市| 芜湖县| 池州市| 南平市| 清河县| 吉林省| 丰县| 宽城| 长汀县| 金塔县| 股票|