从包含此列的所有表中删除列

5anewei6  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(303)

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

7vux5j2d

7vux5j2d1#

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

qlzsbp2j

qlzsbp2j2#

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

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

这里没有模式信息;如果你需要的话就加上。运行此查询将得到一组结果,这些结果是删除列时必须运行的sql。属于关系/fk的列不能删除
如果你想写一些东西,比如一个存储过程,它会删除一个列作为一个命名参数,你必须把这样一个sql的结果构建成一个字符串并动态地执行它;编程相当于在查询工具中运行此查询、复制结果网格、粘贴到查询编辑器并运行生成的sql

相关问题