2016-05-11 141 views
0

我有兩列是在measurement_unitmeasurement_unit柱和measurement_size .The值ml,gm,litre。而measurement_size200,1300,2000具有我已經轉換的measurement_size所有值圓圖如.2,1.3,2的值的列的值現在我想要將measurement_unit的值更改爲literkg,這裏是我的情況表達式。但它不起作用。我該怎麼辦?另外,它不是更新查詢,我正在爲我的報告執行此操作。它不會更改數據庫中的任何值..情況下表達改變

CASE WHEN MUC.name='ml' THEN (MUC.name)='Liter' 
    WHEN MUC.name='gm' THEN (MUC.name)='Kg' 
    END AS Measurement, 

回答

1

一種可能性是使用CASE WHENUPDATE語句中:

UPDATE MUC 
SET MUC.name = CASE 
    WHEN MUC.name = 'ml' THEN 'Liter'; 
    WHEN MUC.name = 'gm' THEN 'Kg'; 
ELSE MUC.name 
END 

我不喜歡這個解決方案的唯一的事情是,它仍然會更新行不匹配,使用當前值。如果你真的只需要更新您打算轉換行,那麼你可以嘗試使用兩個UPDATE語句,包裹在一個交易:

START TRANSACTION 
    UPDATE MUC 
    SET MUC.name = 'Liter' WHERE MUC.name = 'ml' 
    UPDATE MUC 
    SET MUC.name = 'Kg' WHERE MUC.name = 'gm' 
COMMIT 

如果你想確保沒有人的交易可能有必要看到你的單位處於中間狀態。

+0

但是這個列的測量方法的解決方法是什麼? –

1

你可以試試這個。

select 
CASE WHEN M_unit='ml' THEN 'Liter' 
    WHEN M_unit.name='gm' THEN 'Kg' 
    ELSE M_UNIT 
    END AS Measurement_UNIT, 
M_size/1000 as Measurement_SIZE 
from Table 
相關問題