程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 也許是被忽略的update語句(update技巧)

也許是被忽略的update語句(update技巧)

編輯:更多數據庫知識

呵呵,園裡的兄弟我又來寫簡單的文章了,希望大家不吝賜教。這次要說的是sql裡面的update語句。說到這裡,肯定會有很多兄弟不滿意了,不就是update語句嗎?誰不會寫啊,update table set column=expression [where search_condition 啊。

但真的update語句就僅僅這樣嗎?它的精髓它的原理是什麼呢?我們通過例子來說明:
假設有一張成績表,只有兩個字段,姓名和成績。怎樣用一個sql語句查詢出某個學生的姓名,成績以及在表中的排名?
呵呵,這個問題是上次我發過的,詳情見 http://www.jb51.net/article/53832.htm
結果可以去那裡看。現在改改問題,假設這張成績表有三個字段,姓名、成績和排名,現在只有姓名和成績有值,怎樣將他們的排名更新上去呢?

有朋友可能會提出類似解決方案:先還是用查詢語句查詢出來,然後通過游標更新排名。
有沒有更好的解決方案呢?當然是有的,答案就是用update語句。

update 成績表 set 排名=(select count(*)+1 from 成績表 where a.成績<成績)
from 成績表 a

可以看到,只用一個語句就實現了。同時我們也可以發現它跟我們平常寫的update語句不同,多了from。其實update語句的原理和select語句很類似,完整的update語句應該是update table set column=expression from table [where search_condition] ,可見後面的一截完全就是個查詢語句。當update的table和查詢的table(也就是from後面的table)完全一致的時候則可以省略,寫成我們最常見的update table set column=expression [where search_condition] 。

上面僅僅是舉了個例子來說明update的用法,真正在開發的時候,靈活恰當地使用update可以達到事半功倍的效果哦。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved