我想编写一个SQL命令,在一个ALTER TABLE语句中从一个表中删除多个列.

MSDN's ALTER TABLE documentation...

DROP { [CONSTRAINT] constraint_name | COLUMN column_name }

指定从表中删除约束名称或列名称.如果兼容级别为65或更低,则不允许使用DROP列.可以列出多个列和约束.

它说可以在语句中列出多个列,但语法没有显示可选的逗号或任何可能提示语法的内容.

我应该如何编写SQL以在一条语句中删除多个列(如果可能)?

推荐答案

对于SQL Server:

ALTER TABLE TableName
    DROP COLUMN Column1, Column2;

语法是

DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ] 

对于MySQL:

ALTER TABLE TableName
    DROP COLUMN Column1,
    DROP COLUMN Column2;

或者像这样1:

ALTER TABLE TableName
    DROP Column1,
    DROP Column2;

1单词COLUMNoptional,可以省略,除了RENAME COLUMN(以区分列重命名操作和RENAME表重命名操作).更多信息here.

Sql相关问答推荐

Snowflake - SQL查询-登录注销-总工作时间

为主表中的每一行查找N个最新行

SQL更新,在2个额外的表上使用内部连接

SQL查询组类值在同一行中,并连接和排序其他值

Postgres trunc_date删除一个月

当交叉联接3个或更多表时,实体框架中是否会传输冗余的行数据并占用数据库带宽?

如何计算一个用户S的日常连胜?

直接加法(1+1)与聚合函数SUM(1+1)的区别是什么

按日期时间(不包括秒)连接表

snowflake/SQL嵌套的JSON对象和数组

基于多参数的SQL Server条件过滤

是否可以为表中的所有列生成散列值?

仅在日期相隔时递增(Oracle SQL)

MS Access问题查询中的自定义字段

同一表的Oracle SQL更新(含YTD合计)

替换SQL Server XML中多处出现的 node 值

SQL 根据前一天的最大值计算每天的值数

如何为 ActiveRecord 联接应用附加条件

每组使用平均值来填补缺失值的SQL

如何在 ClickHouse SQL 中使用 CTE 将邻居语句中的数字作为偏移量传递?