2017-02-26 48 views
0

我需要更新列,以便NULL值成爲在'division'列n中也具有特定值的行中的默認標誌'N'。 (該標誌可以是NULL,如果「分裂」列是某些其他值) 似乎很容易....MYSQL更新其中值IS NULL也更新非空值

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

然而,第一次在此跑Dev和第一次測試跑它將division_id = 2到ALL的行的所有標誌替換爲「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 

編輯:這是不應該的吧?問題是對球隊其他開發人員證實了它,所以我需要嘗試重新創建

,但如果我去回數據和空值在一個行添加到標記欄和「Y '在其他標誌的值,並再次運行SQL,它留下'Y',只替換NULL。

所以手動設置這個...

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

並再次運行理所當然地成爲

id | ....| division_id | rfb_flag 
3    2   N 
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); 

希望它有幫助。