2017-02-26 19 views
0

NULL値がデフォルトのフラグ 'N'になるように列を更新する必要がありました。 (「分割」の列は、特定の他の値である場合にフラグがNULLであることができる) が容易十分....MYSQL updateここで、値はNULLで、NULLでない値も更新します。

UPDATE participation_criteria SET rfb_flag='N' WHERE division_id=2 AND rfb_flag IS NULL; 

しかし、初めてこのDEVに走って初めてそれがテストで実行したように見えましたこれは、division_id = 2の行のすべてのフラグを 'N'に置き換えました(rfb_flagがNULLに設定されているだけでなく)。したがって、行に 'Y'フラグがあり、division_id = 2の場合は、 'N'に設定されています。

この...

id | ....| division_id | rfb_flag 
3    2   NULL 
4    2   Y 
5    2   NULL 
6    2   Y 

id | ....| division_id | rfb_flag 
3    2   N 
4    2   N 
5    2   N 
6    2   N 

EDITなった:これは、右起こるべきではないのですか?問題は、チームの他のDEVがそれを確認したので、私はそれを

を再作成しかし、私はデータに戻った場合と一列にフラグ列にNULL値を追加しようとするのに必要であると「Y 'フラグの値を他のSQLに戻し、SQLを再び実行すると、' Y 'を残し、NULLだけを置き換えます。

私は小さな規模でシナリオを複製苦労を抱えている、当然言い換えれば

id | ....| division_id | rfb_flag 
3    2   N 
4    2   Y 
5    2   N 
6    2   N 

になったので、手動で...これに

id | ....| division_id | rfb_flag 
3    2   NULL 
4    2   Y 
5    2   N 
6    2   N 

を設定して、もう一度実行しています。任意のヒント?

答えて

1

これまで私に起こったことです。私の場合、それを解決するのは次のようなことです:

UPDATE participation_criteria SET rfb_flag='N' WHERE division_id=2 AND ISNULL(rfb_flag); 

希望します。

関連する問題