我有下表
No A B C D
A1 1 2 0 0
B1 1 1 1 1
C1 1 1 2 3
我必须查找所有列,如果有任何列是> 1我必须将其更改为1。 所以输出将是
No A B C D
A1 1 1 0 0
B1 1 1 1 1
C1 1 1 1 1
有没有办法一起完成所有操作,而不是在update
查询中逐个指定每个列名。我的真实表有185列。
答案 0 :(得分:1)
使用information_schema
非常简单。
例如:
set group_concat_max_len = 4294967295;
select concat(
'update ',
table_schema,
'.',
table_name,
' set ',
group_concat(concat(' ',column_name,' = least(',column_name,',1)')),
';'
) as update_stmt
into outfile '/tmp/update_all_the_columns.sql'
from information_schema.columns
where table_schema = 'your_schema'
and table_name = 'your_table';
\. /tmp/update_all_the_columns.sql