从包含该列的所有表中删除一列

时间:2020-06-07 06:49:58

标签: mysql sql information-schema

这可能是一个幼稚的问题,但是我不熟悉SQL。多个表中存在一列“ X”。我想使用一个查询从包含此列的所有表中删除COLUMN'X'。

2 个答案:

答案 0 :(得分:0)

删除列与从表中选择或删除某些行不一样,这可以使用一个SQL完成。 要从表中删除该列,您需要编写alter语句,并且所有表都不会具有相同的键约束。 如果确定没有任何限制,则可以尝试使用过程SQL。但是仅SQL不会这样做。

答案 1 :(得分:0)

您无法通过单个查询来执行此操作,但这可能无关紧要,因为删除列是一次性操作,因此执行以下操作就足够了:

SELECT CONCAT('ALTER TABLE ', table_name, ' DROP COLUMN ', column_name) 
FROM information_schema.columns
WHERE column_name = 'x'

这里没有架构信息;如果需要,添加它。运行此查询将为您提供一组结果,这些结果是删除列必须运行的SQL。关系/ FK一部分的列不能删除

如果您要编写一些东西,例如存储过程,将作为指定参数的列删除,则必须将这样的sql结果构建为字符串并动态执行它;与您在查询工具中运行此查询,复制结果网格,粘贴到查询编辑器中以及运行生成的SQL的编程方式等效的方法

相关问题