我在PostgreSQL中有以下格式的表:
Name Age Gender Occupation
John 32 Male Software Engineer
Sarah 26 Female Graphic Designer
David 41 Male Sales Manager
Emily 29 Female Marketing Coordinator
Michael 37 Male Project Manager
我想在使用limit时从查询结果的每一列中获得所有唯一值。这在postgresql中可以实现吗?
例如,我的查询应该是这样的:
SELECT * FROM my_table
WHERE Gender = 'Male'
LIMIT 2;
我希望获得每列的所有唯一值,而不管我的限制:
Name: John, David, Michael
Age: 32, 41, 37
Occupation: Software Engineer, Sales Manager, Project Manager
Gender: Male
如何使用SQL做到这一点?
3条答案
按热度按时间iswrvxsc1#
这里使用的是
string_agg
。如果更相关,您可以使用另一个聚合函数。参见demo。
不相关,但在表中保存年龄并不是一个好主意,因为它一直在变化。最好有出生日期并使用年龄函数计算年龄。
mgdq6dx12#
您可以使用以下查询来获取每个列的唯一值,
此查询使用带有
DISTINCT
关键字的子查询为每列选择非重复值,并将它们分配给单独的列别名(column_1、column_2、column_3等)。LIMIT
关键字用于指定要为每列选择的唯一值的数量。Note
表示此查询假设表中的所有列具有相同的数据类型。此外,对于具有大量列或大量不同值的表,此查询可能效率不高。
zzwlnbp83#
你可以使用子查询,完全忽略外部where子句:
**编辑:**要忽略
LIMIT
,您可以使用CTE。