我有一个包含100列的表,我需要从该表的所有列中获取不同的记录。 我使用下面的查询从表中获取不同的记录
select distinct col1, col2, col3,........ from test_table
但是有什么好的查询来从所有列中获取不同的记录 从表中删除,而无需在查询中提及列名。
答案 0 :(得分:0)
我不确定是否有更简单的方法, 您可以使用information_schema来获取您的列,然后使用它。
SELECT string_agg(column_name::character varying, ',') as columns
FROM information_schema.columns
WHERE table_schema = 'schema_name'
AND table_name = 'table_name'
这将返回表中的列列表。
SELECT string_agg(column_name::character varying, ',') as columns
FROM information_schema.columns
WHERE table_schema = 'schema_name'
AND table_name = 'table_name' \gset
您可以参考gset here,
例如,如果您的表有两列“ a”和“ b”,则gset将存储“ a,b”。
echo
可用于检查存储的gset,
\echo :columns
以下查询可能会对您有所帮助,
select distinct :columns from table_name;
答案 1 :(得分:0)
由于您希望在所有列上都使用DISTINCT,并且要选择所有列,因此再简单不过了:
SELECT DISTINCT * FROM table