【发布时间】:2020-09-26 05:26:26
【问题描述】:
这可能是一个幼稚的问题,但我是 SQL 新手。多个表中存在列“X”。我想使用单个查询从包含此列的所有表中删除 COLUMN 'X'。
【问题讨论】:
-
简单的答案 - 你不能。
标签: mysql sql information-schema
这可能是一个幼稚的问题,但我是 SQL 新手。多个表中存在列“X”。我想使用单个查询从包含此列的所有表中删除 COLUMN 'X'。
【问题讨论】:
标签: mysql sql information-schema
您不能使用单个查询来完成此操作,但这可能无关紧要,因为删除列是一次性操作,因此执行以下操作可能就足够了:
SELECT CONCAT('ALTER TABLE ', table_name, ' DROP COLUMN ', column_name)
FROM information_schema.columns
WHERE column_name = 'x'
这里没有架构信息;如果需要,请添加它。运行此查询将为您提供一组结果,这些结果是您必须运行以删除列的 SQL。属于关系/FK 的列可能不会删除
如果您想编写一些东西,例如删除作为命名参数给出的列的存储过程,您必须将这样的 sql 的结果构建成一个字符串并动态执行它;您在查询工具中运行此查询、复制结果网格、粘贴到查询编辑器并运行生成的 SQL 的编程等效项
【讨论】:
删除列与从表中选择或删除某些行不同,这可以通过一个 SQL 完成。 要从表中删除列,您需要编写 alter 语句,并且所有表都不会具有相同的键约束。 如果您确定没有约束,那么您可以尝试使用过程 SQL。但是只有 SQL 不会这样做。
【讨论】: