如果有一个表'Table_Name',我想删除Table_Name中的所有列,除了几列。我可以通过指定每个列名来手动完成此操作,但是有没有更简单的方法可以做到这一点?
答案 0 :(得分:1)
我认为该任务可以简化您的询问要求:
SET @myquery = (SELECT CONCAT('ALTER TABLE Table_Name ', GROUP_CONCAT(' DROP
COLUMN ', `COLUMN_NAME`))
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='DB_NAME'
AND `TABLE_NAME`='Table_Name' AND `COLUMN_NAME` NOT IN ('name', 'password'));
PREPARE stmt FROM @myquery;
EXECUTE stmt;
用要排除的“名称”,“密码” 替换DB_NAME,Table_Name和列列表。
答案 1 :(得分:0)
对于删除的每一列,MySQL必须是明确的。但是,您可以一次删除多个:
ALTER TABLE x
DROP COLUMN one,
DROP COLUMN two,
DROP COLUMN three