如何删除除mysql中的少数列以外的所有列?

时间:2018-10-23 04:38:04

标签: mysql mysql-workbench

如果有一个表'Table_Name',我想删除Table_Name中的所有列,除了几列。我可以通过指定每个列名来手动完成此操作,但是有没有更简单的方法可以做到这一点?

2 个答案:

答案 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