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

來源:互聯網
上載者:User

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

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

但真的update語句就僅僅這樣嗎?它的精髓它的原理是什麼呢?我們通過例子來說明:
假設有一張成績表,只有兩個欄位,姓名和成績。怎樣用一個sql語句查詢出某個學生的姓名,成績以及在表中的排名?
呵呵,這個問題是上次我發過的,詳情見 http://www.bkjia.com/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可以達到事半功倍的效果哦。


對於UPDATE語句

...不知道你用的什麼圖形介面按斷行符號就能執行語句 但是有一點可以肯定的是你沒寫 ; 的話語句是絕對執行不了的 別告訴我你有寫語句的時候最先寫 ; 的習慣
所以你的擔心基本屬於杞人憂天.....正常人是不可能犯這種超低級錯誤的..
 
UPDATE語句怎更新多行條件

where 學號 in ('1', '3','5', '7')

就可以了。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.