postgresql - 将查询结果用于 SELECT 列表
问题描述
我想选择一个表的所有列,除了一个。
我的第一步是遵循此答案中给出的示例。有这样的东西:
SELECT string_agg(quote_ident(attname), ', ' ORDER BY attnum)
FROM pg_attribute
WHERE attrelid = 'public.my_table'::regclass
AND NOT attisdropped
AND attnum > 0
AND attname <> 'bad_column'
正如预期的那样,这会产生一个字符串。但现在我想用它来查询我的表的行。如果我们从上面调用结果subset_columns
,那么我想进行查询:
SELECT subset_columns
FROM my_table
LIMIT 10;
但我不确定如何生成这个subset_columns
变量,如果这种查询方式在 postgresql 中是否可行?
解决方案
PostgreSQL 中没有这样的功能。您只能在 pl/PgSQL(或其他 pl/*)中执行此操作,但不能在普通 SQL 中执行此操作,并且仅当您想将值存储在临时表上时。您将在下面找到如何创建变量 pl/PgSQL:
WITH 子集列作为 ( SELECT string_agg(quote_ident(attname), ', ' ORDER BY attnum) FROM pg_attribute WHERE attrelid = 'public.my_table'::regclass 并且没有参加 AND attnum > 0 AND attname <> 'bad_column' )
我建议您创建一个视图而不是变量,然后选择所有所需的列,除了您不想导出的列。因此,您可以随时重复使用它。
推荐阅读
- javascript - 如何将此日期从“dd/mm/yyyy”拆分为“yyyy/mm/dd”?
- pygame - pygame 窗口打开并立即关闭
- c++ - USACO 分级机的响应与我的机器不同
- python-3.x - Keras 错误 - 预期 block5_pool 有 4 个维度,但得到了形状为 (6, 1) 的数组?
- javascript - 如何使缩放图像不经过其容器
- javascript - Kendo UI 下拉列表已选中
- java - 使用 2d 数组和 for 循环的 Mailman 邮箱问题
- java - Spring Data Rest JPA rest service with hibernate:控制延迟加载
- javascript - 如何从 javascript 函数内部调用 jquery buttonclick 函数
- ant - 带有空输入字符串的 apache Ant 基本名称问题