2017-01-06 78 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