我正在尝试从与 Handsontable 一起使用的 MySQL 表中删除一列。当我从 Handsontable 中删除列时,我可以使用 afterRemoveCol()
回调获取该列的索引:
afterRemoveCol: function (index, amount) {
alert(index +' amount: '+amount);
}
我想使用此回调函数返回的列号 (n
) 从 MySQL 表中删除该列,如下所示:
ALTER TABLE tbl_Blah DROP COLUMN n;
那么,如果我想从 MySQL 表中删除第 3 列,我该如何仅使用列号来执行此操作?
最佳答案
要添加到 RMathis 答案,您还可以使用 SET 与 PREPARE and EXECUTE 结合定义 DROP 字符串,从而在 SQL 中执行所有操作。
MySQL 5.6 架构设置:
CREATE TABLE Table1
(`col1` varchar(1),
`col2` varchar(1),
`col3` varchar(1),
`col4` varchar(1),
`col5` varchar(1))
;
set @col = (select column_name
from information_schema.columns
where table_name='table1' and ordinal_position=3);
SET @s = CONCAT("alter table table1 drop column ", @col);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
查询 1:
desc table1
<强> Results :
| COLUMN_NAME | COLUMN_TYPE | IS_NULLABLE | COLUMN_KEY | COLUMN_DEFAULT | EXTRA |
|-------------|-------------|-------------|------------|----------------|-------|
| col1 | varchar(1) | YES | | (null) | |
| col2 | varchar(1) | YES | | (null) | |
| col4 | varchar(1) | YES | | (null) | |
| col5 | varchar(1) | YES | | (null) | |
关于mysql - 如何使用列号从 MySQL 表中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42635314/