濮阳杆衣贸易有限公司

主頁 > 知識庫 > 利用帶關(guān)聯(lián)子查詢Update語句更新數(shù)據(jù)的方法

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

熱門標簽:合肥crm外呼系統(tǒng)加盟 西安電話自動外呼系統(tǒng) 美國地圖標注軟件下載 城市地圖標志怎么標注 硅基電話機器人官網(wǎng) 怎么修改高德地圖標注 漯河電銷回撥外呼系統(tǒng) 電話機器人怎么看余額 長沙外呼系統(tǒng)平臺

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

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

--1.創(chuàng)建測試表
  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)建測試數(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.通過游標方式更新
  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.刪除測試表
  drop TABLE Table1
  drop TABLE Table2

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

--1.創(chuàng)建測試表
  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)建測試數(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.通過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.刪除測試表
  drop TABLE Table1
  drop TABLE Table2

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

標簽:濟源 玉溪 撫順 廣西 商洛 文山 瀘州 吉林

巨人網(wǎng)絡通訊聲明:本文標題《利用帶關(guān)聯(lián)子查詢Update語句更新數(shù)據(jù)的方法》,本文關(guān)鍵詞  利,用帶,關(guān)聯(lián),子,查詢,Update,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用帶關(guān)聯(lián)子查詢Update語句更新數(shù)據(jù)的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于利用帶關(guān)聯(lián)子查詢Update語句更新數(shù)據(jù)的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    应用必备| 榆社县| 河南省| 锦屏县| 缙云县| 南木林县| 沧州市| 开远市| 台山市| 武穴市| 焦作市| 凤台县| 厦门市| 乌鲁木齐市| 广河县| 赣州市| 舒兰市| 贺兰县| 衢州市| 延边| 沂水县| 岐山县| 额尔古纳市| 廉江市| 牟定县| 冀州市| 永泰县| 鸡东县| 黑河市| 汤原县| 佛学| 武隆县| 安化县| 大新县| 布拖县| 章丘市| 商都县| 漳州市| 加查县| 康保县| 通山县|