You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Redshift如何在不创建存储过程的情况下查询表/视图中除指定列外的所有列

AWS Redshift如何在不创建存储过程的情况下查询表/视图中除指定列外的所有列

嘿,这个需求太常见了!在Redshift里完全不用写存储过程就能搞定,给你两个最实用的方案:

1. 最直接:用Redshift原生的* EXCEPT语法

Redshift专门扩展了SQL语法,支持直接排除指定列,这是最简单的方式,不用手动列所有需要的列。

比如你要查询public.my_table,排除col1和col2,直接写:

SELECT * EXCEPT (col1, col2) FROM public.my_table;

如果是视图的话用法完全一样:

SELECT * EXCEPT (exclude_col1, exclude_col2) FROM public.my_view;

要是列名包含特殊字符(比如空格、大写),记得给列名加双引号:

SELECT * EXCEPT ("User ID", "Order Date") FROM public.sales_data;

另外还可以搭配REPLACE来替换列,比如把old_col换成计算后的新列:

SELECT * EXCEPT (old_col) REPLACE (old_col * 1.1 AS new_col) FROM public.my_table;

2. 灵活方案:用系统视图生成查询语句

如果遇到一些不支持* EXCEPT的场景(比如某些旧版本的客户端兼容问题),或者需要生成可复用的查询语句,可以利用Redshift的系统视图information_schema.columns来自动拼接列名。

比如要排除col1、col2,查询public.my_table:

SELECT 'SELECT ' || STRING_AGG('"' || column_name || '"', ', ') || ' FROM public.my_table;' AS generated_query
FROM information_schema.columns
WHERE table_schema = 'public' 
  AND table_name = 'my_table'
  AND column_name NOT IN ('col1', 'col2');

执行这个语句后,会得到一个完整的SELECT语句,里面自动列好了除指定列外的所有字段,你把生成的结果复制出来直接执行就行。

这个方法的好处是可以批量处理,或者把生成的语句保存下来,适合需要频繁调整排除列的场景。

备注:内容来源于stack exchange,提问作者AIViz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:29:52