mysql UPDATE没有指定列名

时间:2015-08-26 08:19:34

标签: mysql sql

我想更新表格中的所有值,而不管值与特定值匹配的列

例如:

表     column_a column_b column_c

abc              xhk             None
None             thk             hi
xyz              None            None
None             abcdef          None

我想将所有'无' 更改为' N / A'

所需的结果表     column_a column_b column_c

abc              xhk             N/A
N/A              thk             hi
xyz              N/A             N/A
N/A              abcdef          N/A

我可以使用查询

执行此操作
update table_name set column_a = 'N/A' where column_a = 'None'
update table_name set column_b = 'N/A' where column_b = 'None'
update table_name set column_c = 'N/A' where column_c = 'None'

有没有更好的方法,最好不指定列名?

2 个答案:

答案 0 :(得分:1)

您需要使用动态SQL

set @sql:='';
select @sql:=concat(@sql,' case when ',column_name,'=''none'' 
     then ''N/A'' else ',column_name,' end,');
set @sql:=left(@sql,length(@sql)-1);
set @sql:=concat('select ',@sql,' from your_table');

prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;

答案 1 :(得分:1)

这是一个建议。我以为它可以是这样的。如果它正在工作。让我知道。

$SqlQuery = "SHOW COLUMNS FROM TableName";
    $Result= mysql_query($SqlQuery);
    while($Row = mysql_fetch_array($Result))
    {
      $ColumnName=$Row['Field'];
      mysql_query("UPDATE TableName SET $ColumnName='N/A' WHERE $ColumnName='None'");
    }