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

Ram*_*dav 1 mysql mysql-workbench

如果有一个表“Table_Name”,我想删除 Table_Name 中的所有列(除了少数列)。我已经能够通过指定每个列名称来手动执行此操作,但是有没有更简单的方法来执行此操作?

小智 5

我认为这个任务可以简化你的要求:

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;
Run Code Online (Sandbox Code Playgroud)

将 DB_NAME、Table_Name 和列列表替换为要排除的“名称”、“密码” 。