2017-02-26 75 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); 

希望它有帮助。