如圖有songs_br_1表,想在trends一列生成內容,判斷的標準是如thisweekPos的值小于lastweekPos,則在trends上生成“rising“;如thisweekPos的值大于lastweekPos,則在trends上生成“falling“

我期望的是在圖中下面一條標注的區域生成“falling”
但如圖,能否一次生成我想要的如:rising和falling等,還是一條一條的做可行?這是我使用set方法設定的sql
update songs_br_1
set trends=(
select 'Rising'
from songs_br a
where a.id=songs_br_1.id and a.lastweekPos<>'New' and a.lastweekPos<>'Re' and a.lastweekPos>a.thisweekPos)
其中songs_br表大致長這樣,就跟songs_br_1差不多

但是我一條一條的做的時候,第二次使用set,將滿足條件的表中trends欄位設為“faling”的時候就會把之前已經寫入“Rising”的值覆寫。后來我想了想知道這樣寫不對,求大神解答出一個正確寫法
uj5u.com熱心網友回復:
update songs_br_1set trends=(
case when thisweekPos<lastweekPos then 'Rising'
else 'falling'
end)
uj5u.com熱心網友回復:
--洗掉這個列
ALTER TABLE songs_br_1 DROP COLUMN trends;
GO
--增加計算列
ALTER TABLE songs_br_1 ADD trends AS case when thisweekPos<lastweekPos then 'Rising' else 'falling' END;
GO
計算列的好處就是,不用更新來更新去。
以后你增加、修改了一些記錄, 計算列會自動變過來, 不用你操什么心。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/27979.html
標籤:疑難問題
上一篇:Python問題,求教
