一條Update語句實現兩列值的交換

2021-04-12 16:14:51 字數 818 閱讀 8274

趙老闆,前些日子去某軟體公司筆試去了,拿到試卷,第乙個題就是「用一條update交換兩列的值」,當然表是給定的。這還不簡單,上去就要寫,可是寫不出來,交換值肯定要用乙個中間變數來儲存。左思右想,還是沒有想出來,放棄,做下乙個題。

趙老闆回來問這個自稱是sql高手的高總,聽了以後我的頭腦也暈了,沒有思路,一條語句怎麼實現?得用游標吧。不會,到網上搜尋,搜到了乙個,這位無名網友的方法是update table_a set cola_1=cola_2,cola_2=cola_1;當時我和趙老闆還笑,還能這樣寫!覺得

沒有搜尋到最佳答案。最後沒有辦法了,實踐一下吧。

declare

@tbtable

(name 

varchar(20

),memo 

varchar(20

))insert

into

@tbselect'老公

','男人

'insert

into

@tbselect'老婆

','女人

'select

*from

@tbupdate

@tbset

name

=memo,memo

=name 

select

*from

@tb

答案竟然出來了,出乎意料,這樣也行呀,原來就這麼簡單。實踐是檢驗理論的唯一的真理!

看來上面這位仁兄真是高手呀,讓您見笑了!

看一下網友們是如何解決這個問題的:

直接改欄位名不就好了。

可以重新命名列實現。

一句沒發實現。

優化一條UPDATE語句

最近見到一條開發人員寫的update語句,覺得沒什麼不對,可又覺得有地方不對,因為效能低下.update a set col2,col3 select col1,t from b where b.col1 a.col1 where exists select b.col1 from b where ...

mysql一條語句update多條記錄

通常情況下,我們會使用以下sql語句來更新字段值 update mytable set myfield value where other field other value 但是,如果你想更新多行資料,並且每行記錄的各字段值都是各不一樣,你會怎麼辦呢?剛開始你可能會想到使用迴圈執行多條update...

MYSQL,分別用一條語句交換兩列的值與兩行的值

測試表 create table test id int 11 not null auto increment,name varchar 255 not null,order varchar 255 default null primary key id engine innodb auto inc...