mysql - 如何使用列号从 MySQL 表中删除列

标签 mysql handsontable

我正在尝试从与 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 中执行所有操作。

SQL Fiddle

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/

相关文章:

mysql - LIKE 的正确语法是什么?

mysql - 允许所有远程连接,MySQL

mysql - Peewee 在 sqlite 而不是 mysql 中创建表

javascript - JQuery Handsontable - remove_col 不起作用

php - 在 Flash AS3 中加载 PHP URL

php - 使用iOS前端将空白数据插入MYSQL数据库

Handsontable 更改一个列源

javascript - 动态调整包含 Handsontable 的容器的大小

javascript - Handsontable - 通过 ajax 获取数据并在一列上设置自动完成

javascript - 自定义 Handsontable 滚动条设计