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

如何删除mysql中除少数列以外的所有列?,mysql,mysql-workbench,Mysql,Mysql Workbench,如果有一个表'table_Name',我想删除表\u Name中的所有列,除了少数列。我可以通过指定每个列的名称来手动完成这项工作,但是有没有更简单的方法呢?MySQL需要对您删除的每个列进行显式处理。但是,您可以一次删除多个: ALTER TABLE x DROP COLUMN one, DROP COLUMN two, DROP COLUMN three MySQL需要对您删除的每一列进行显式处理。但是,您可以一次删除多个: ALTER TABLE x DROP COLUMN one, D

如果有一个表'table_Name',我想删除表\u Name中的所有列,除了少数列。我可以通过指定每个列的名称来手动完成这项工作,但是有没有更简单的方法呢?

MySQL需要对您删除的每个列进行显式处理。但是,您可以一次删除多个:

ALTER TABLE x
DROP COLUMN one,
DROP COLUMN two,
DROP COLUMN three

MySQL需要对您删除的每一列进行显式处理。但是,您可以一次删除多个:

ALTER TABLE x
DROP COLUMN one,
DROP COLUMN two,
DROP COLUMN three

我认为这个任务可以简化您的提问要求:

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'、

我认为此任务可以简化您的询问要求:

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_名称、表_名称和列列表替换为要排除的“名称”、“密码”