MYSQL更新,其中值IS NULL也更新非null值

时间:2017-02-26 19:50:44

标签: mysql

我需要更新一列,以便NULL值成为默认标志'N',在'division'列中也有一定值的行。 (如果'division'列是某些其他值,则该标志可以为NULL) 看似很容易....

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

但是,第一次在dev中运行并且第一次在测试中运行时,它将divide_id = 2的行的所有标志替换为'N'(不仅仅是rfb_flag设置为NULL的那些)。所以如果a row有'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

编辑:这不应该发生吗? 问题是团队确认的另一个开发者,所以我需要尝试重新创建它

但是,如果我返回数据并将NULL值添加到一行中的标志列,并将标志的'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 个答案:

答案 0 :(得分:1)

之前发生在我身上。在我的情况下解决它的是:

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

希望它有所帮助。