在MySQL中有一个名为“mytable”的表,我执行哪些sql命令从表的每一列的名称中删除前缀“example_”,而不是逐一重命名所有列名?
要重申我的评论,您可以使用INFORMATION_SCHEMA.COLUMNS让MySQL为您构建查询;你仍然需要单独运行它,但是如果你要执行很多这些操作,它可以节省大量的输入并帮助确保你不会忽略某些东西(尽管也应该注意检查结果在使用它们之前,确保您的过滤条件不会最终导致不良变化。)
已经有一段时间了,因为我已经打电话做这样的事情,所以可能存在拼写错误或其他小的语法错误,但它得到了一般的想法:
SELECT CONCAT('ALTER TABLE `', c.TABLE_NAME, '` '
, GROUP_CONCAT(
CONCAT('RENAME COLUMN `', c.COLUMN_NAME, '`'
, ' TO '
, '`', SUBSTRING(c.COLUMN_NAME, LEN('example_')), '`'
)
ORDER BY c.ORDINAL_POSITION)
, ';'
) AS alterQuery
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_filtering_criteria
AND c.COLUMN_NAME LIKE 'example_%'
AND other_filtering_criteria
GROUP BY c.TABLE_NAME
ORDER BY c.TABLE_NAME
试试这段代码
`ALTER TABLE table_name
MODIFY COLUMN colname type,
MODIFY COLUMN colname type,
etc..,
etc..;`