如何从表列中删除null?

时间:2015-07-10 07:53:56

标签: mysql sql null

我有一个填充了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。

3 个答案:

答案 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子句中的键列。