我在一个表中有一大组列(50+),其中包含一些关于游戏的统计信息。
我们正在简化我们的统计数据,所以现在我们想做两件事。
- 删除名称包含“%_nd%”的所有列
- 从任何列名中删除字符串“_er”。
是否有一种简单的方法可以自动执行此操作,还是我需要手动输入所有列名?
我在一个表中有一大组列(50+),其中包含一些关于游戏的统计信息。
我们正在简化我们的统计数据,所以现在我们想做两件事。
是否有一种简单的方法可以自动执行此操作,还是我需要手动输入所有列名?
那么您可以通过运行以下命令并使用它生成的 SQL 来执行第一个操作:
select distinct concat('alter table ',table_name,' drop column ',column_name) someSql
from information_schema.columns
where column_name like '%_nd%'
你可以用类似的查询来做第二个:
select distinct concat('alter table ',table_name,' change ',column_name, ' ', replace(column_name, '_er', ''), ' ', data_type, case when CHARACTER_MAXIMUM_LENGTH is not null then concat('(', CHARACTER_MAXIMUM_LENGTH, ')') end) someSql
from information_schema.columns
where column_name like '%_er%'