我有一个填充了10k行数据的数据库表。这些行中的大量行在特定列中具有空值。如何将此空值替换为例如字符串列的空字符串?
我正在寻找最简单的方式来执行此操作,因为此操作只需要执行一次。
我尝试了什么:
UPDATE tablename set mycolumn='' where mycolumn is null;
这给了我以下错误:
错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表要禁用安全模式,请切换首选项中的选项 - > SQL编辑器并重新连接。
我不是数据库的管理员,所以我无法禁用安全模式。
UPDATE tablename set mycolumn=''
where Id in (SELECT Id FROM tablename where mycolumn is null);
这给了我以下错误:
错误代码:1093。您无法指定目标表' tablename'用于FROM子句中的更新。
注意:
在上面的示例中,我已使用占位符替换了实际的tablename和column-name。
答案 0 :(得分:1)
你可以尝试
UPDATE tablename set mycolumn = ''
where Id IN (select Id from (select Id from tablename where mycolumn IS NULL) as x)
但是你为什么要用空字符串替换NULL
值呢?
如果你可以禁用安全模式this将是重复的。
答案 1 :(得分:0)
您可以更改表并为列设置NOT NULL。
您还可以简单地执行以下操作:
要禁用安全模式,请切换首选项中的选项 - > SQL编辑器并重新连接。
答案 2 :(得分:0)
嗯,你可以这样做:
UPDATE tablename set mycolumn='' where mycolumn is null and Id is not null;
这实际上不会更改更新逻辑中的任何内容(因为ID是主键且不能为null)并且它使用where子句中的键列。