2017-01-06 110 views
0

我有一個名爲「DFM」和「目標」字段的表「Master」。我非常需要1個UPDATE查詢,將基於DFM的如下值填充「目標」字段:基於多個選項更新字段值多個值

DFM Target 

50001 85 
50009 255 
50011 233 
50012 290 
50062 183 
50063 150 
50064 159.5 
50142 187 
50143 174 
50179 284.25 
50180 195.75 
50286 157.25 
50287 231.25 

例如,如果DFM值是50142,應該更新該行的字段187

那麼這可以用1個查詢來完成,還是我需要13個?

我只知道長篇大論方式即

UPDATE Master, SET Target = 85 WHERE DFM = 50001 

我真的不希望,雖然13個查詢。

+0

似乎有一些信息丟失。你的'Master'表中已經有你要更新它們的'Target'的值。當你想根據'Master'上的值或'Master'上的值來更新某個其他表上的'Target'字段時? – SunKnight0

+0

不,如果不明確,抱歉,DFM已填充,但不是目標。我上面給出的信息僅僅是我想要填充的數據,所以你可以看到它的樣子。 – davidjwest

+0

然後下面給出的解決方案(與我的更正)應該工作。如果'target'根本沒有被填充,或者如果'dfm'的所有​​可能值在交換機內都有替換值,那麼也可以跳過'where'部分。 – SunKnight0

回答

2

您可以使用switch

update master 
    set target = switch(dfm = 50001, 85, 
         dfm = 50009, 255, 
         . . . 
         ) 
    where dfm in (50001, 50009, . . .); 
+1

這應該是'switch(dfm = 50001,85,dfm = 50009,255,...)' – SunKnight0