趙老闆,前些日子去某軟體公司筆試去了,拿到試卷,第乙個題就是「用一條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...