我想更新表格中的所有值,而不管值与特定值匹配的列
例如:
表 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'
有没有更好的方法,最好不指定列名?
答案 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'");
}