2017-01-06 9 views
0

"DFM"と "Target"と呼ばれるフィールドを持つテーブル "Master"があります。 DFM値が50142であれば、それは187更新フィールドは複数のオプションに基づいて複数の値を持つ

と、その行のフィールドを更新する必要がありますたとえば

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の値に基づいて、「ターゲット」フィールドに移入されます1つのUPDATEクエリを必要とします

これは1つのクエリで行うことができますか、または13を必要としますか?

私は、私は本当にかかわらず、13個のクエリを望んでいないすなわち

UPDATE Master, SET Target = 85 WHERE DFM = 50001 

長いったらしい方法を知っています。

+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

関連する問題