如何对 PostgreSQL 查询中的选择列应用 DISTINCT 约束?
假设您有一个包含5列的表exam_scores。下面给出了一个带有一些虚拟数据的示例。
现在,一名学生可以参加多个科目的考试,因此,一名学生有多个行。如果您想找出班级中的学生总数,您可能需要找到roll_no的不同值的数量。您可以对特定列应用不同的约束,如下所示-
SELECT DISTINCT ON (roll_no) name, roll_no FROM exam_scores ORDER BY roll_no DESC
以下是上述查询的输出结果-
您还可以对列别名应用不同的约束。
SELECT DISTINCT ON (student_id) name as student_name, roll_no as student_id FROM exam_scores ORDER BY student_id ASC
上述查询的输出将如下所示-
DISTINCT约束也可以应用于多个列。假设您要查找收到的不同答卷的数量。这将等于(roll_no,subject)组合的不同值的数量。
SELECT DISTINCT ON (roll_no, subject) name, roll_no, subject FROM exam_scores ORDER BY roll_no, subject, name DESC
此查询的输出如下-
请注意,ORDERBY表达式与DISTINCTON表达式具有相同的列顺序很重要。在覆盖DISTINCTON列之后,ORDERBY表达式可以有更多列。