【问题标题】:Delete a column from all the tables that contains this column从包含该列的所有表中删除一列
【发布时间】:2020-09-26 05:26:26
【问题描述】:

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

【问题讨论】:

  • 简单的答案 - 你不能。

标签: mysql sql information-schema


【解决方案1】:

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

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

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

如果您想编写一些东西,例如删除作为命名参数给出的列的存储过程,您必须将这样的 sql 的结果构建成一个字符串并动态执行它;您在查询工具中运行此查询、复制结果网格、粘贴到查询编辑器并运行生成的 SQL 的编程等效项

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      • 2018-06-17
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      相关资源
      最近更新 更多