假设我在表格中有8列A B C D E F G H,我想从表中删除除C和E之外的所有列。
我该怎么做?
答案 0 :(得分:2)
根据我的理解,只有不包含在drop列列表中才能实现此目的的唯一方法,意味着只排除那些你不想要DROP的列。然后使用ALTER Table with DROP Column命令
你可以在PostgreSQL中以这种方式DROP多列
ALTER TABLE table DROP COLUMN A, DROP COLUMN B, DROP COLUMN D, DROP COLUMN F, DROP COLUMN G, DROP COLUMN H;
答案 1 :(得分:1)
如果您只知道要保留的那些,而不是您想要保留的那些,您可以这样做:
DO $$
DECLARE
crow record;
excludes varchar[] := array['C', 'E'];
yourtab varchar := 'a_table';
BEGIN
FOR crow IN
SELECT * FROM information_schema.columns WHERE table_schema = 'public' and table_name = yourtab and column_name != ALL(excludes)
LOOP
EXECUTE format ('ALTER TABLE %s DROP COLUMN %s', yourtab, crow.column_name);
END LOOP;
END;
$$ language plpgsql