2017-02-16 5 views
0

にNULLにテーブル内のすべての負の値を更新する:私は200個の列を持っている最も効率的な方法は、私が1列にNULLにテーブル内のすべての負の値を更新することができますMySQLの

UPDATE table_1 
SET var1 = NULL 
WHERE var1 < 0 
; 

これは素晴らしいですが、これはこのUPDATEを適用したいと思います。

この同じパラダイムを明示的に200回実行して、各変数を一度に1つずつ更新することができます。しかし、これは約1,000行のコードを使用しなければならないことを意味します。

ifを使用した場合は、200行に近いコードで処理する可能性があります。しかし、これはまだ私に不快感と不満を感じさせる。

私はこのようなことをRでやりたいときは、df[df<0] <- NAのようなものを使用することができ、いくつかのキーストロークの中で私はやります。

MySQLでは、簡潔でエレガントでインテリジェントにこの問題にアプローチする方法はありますか?

+0

あなたのデザインが壊れています。データベーステーブルはスプレッドシートではありません。 – Strawberry

+0

実際にはテンポラリテーブルで、探索的な目的のためにいくつかの動きをしています。その目的のために、これらのすべての負の値を置き換える必要があります。これは、さまざまな社内のエラーコードやその他のものを示しています。これらをNULLと見なしたいと思います。 –

答えて

1

あなたは条件が満たされないときそれらに戻って、元の値を代入するIF()を使用することにより、条件付きで列を更新することができます

UPDATE table_1 
SET var1 = IF(var1 < 0, NULL, var1), 
    var2 = IF(var2 < 0, NULL, var2) 
    ... 
+0

GREATESTも機能します。 – Strawberry

+0

@Strawberryどのように 'GREATEST'をこの? – Barmar

+0

Nevermind - OPが0でなくNULLではないと思っていた – Strawberry

関連する問題