我需要更新一列,以便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
换句话说,我很难在小范围内复制场景。有什么提示吗?
答案 0 :(得分:1)
之前发生在我身上。在我的情况下解决它的是:
UPDATE participation_criteria SET rfb_flag='N' WHERE division_id=2 AND ISNULL(rfb_flag);
希望它有所帮助。