如何从PostgreSQL中的表的所有列中获取不同的记录

时间:2018-10-04 07:14:49

标签: postgresql postgresql-9.6

我有一个包含100列的表,我需要从该表的所有列中获取不同的记录。 我使用下面的查询从表中获取不同的记录

select distinct col1, col2, col3,........ from test_table

但是有什么好的查询来从所有列中获取不同的记录 从表中删除,而无需在查询中提及列名。

2 个答案:

答案 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