2016-03-15 57 views
0

如何根據滿足特定條件的每行將列添加到編號爲1到4的表中?根據邏輯參數將一列添加到具有4個可能的默認值的表中

假設我有一個表: Like this 有兩列(ID)和(結果)和我想添加一個名爲第三列(SCORE)。

我想根據列(結果)中的數字是否符合特定條件,爲列中的每一行給出一個分數(介於1和4之間)。

如果結果是否定的,我想給它的得分爲1, 如果結果是小於30,2分, 小於100的3 和大於100的得分的得分4

我曾嘗試使用CASE語句,但似乎無法使其正常工作; 我搜索關於限制的主題,但他們似乎總是有兩個參數 - 我需要4

+2

你的問題沒有解決。顯示更好的示例和數據庫模式和預期結果。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是[** START **]( http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)瞭解如何提高您的問題質量並獲得更好的答案。 –

回答

0

我已經更新了答案,隨着越來越多的細節問題中給出的(並修復了一些錯誤)

請請記住將table_name和trigger_name更改爲適當的名稱:)。

SOLUTION:

你應該首先的第三列添加到表

ALTER TABLE table_name ADD COLUMN SCORE INT; 

您應該添加觸發器來設置新行的比分:

DELIMITER $$ 
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name 
FOR EACH ROW 
BEGIN 

    SET NEW.SCORE = CASE WHEN NEW.RESULTS < 0 THEN 1 WHEN NEW.RESULTS < 30 THEN 2 WHEN NEW.RESULTS < 100 THEN 3 ELSE 4 END; 

END$$ 
DELIMITER ; 

並且您應該初始化表中存在的行的SCORE值

UPDATE  table_name t 
    SET  t.SCORE = CASE WHEN t.RESULTS < 0 THEN 1 WHEN t.RESULTS < 30 THEN 2 WHEN t.RESULTS < 100 THEN 3 ELSE 4 END; 

希望它有幫助。

+0

非常感謝您的幫助。我可以檢查:我是否仍然在此之後編寫ALTER語句?我對於如何插入新列以及如何得到它的名稱稍有不清(除非我按照ALTER ...)。作爲 – Jacob

+0

我不知道如果在編輯答案時得到通知,但我有更新了整個解決方案所需的更改和更新,如果您有任何問題,請告知我。 – piotrgajow

+0

再次感謝您分享您的知識,這對我們有很大的幫助。 – Jacob

相關問題