Overview of PostgreSQL DISTINCT
We can remove the duplicate rows from a statement’s result set by using a PostgreSQL DISTINCT clause in the SELECT statement. For all groups of duplicate rows, the PostgreSQL DISTINCT clause keeps only one row. PostgreSQL DISTINCT removes all duplicate rows and maintains only one row for a group of duplicates rows. We can use the PostgreSQL DISTINCT clause on multiple columns of a table.
How to Use DISTINCT in PostgreSQL?
Let’s understand the DISTINCT clause syntax as follows:
Explanation: In order to evaluate the duplicate rows, we use the values from the column_name1 column.
The PostgreSQL DISTINCT clause evaluates the combination of different values of all defined columns to evaluate the duplicates rows if we have specified the DISTINCT clause with multiple column names.
DISTINCT column_name1, column_name2
Explanation: In the above statement, in order to evaluate the duplicate rows the values of column_name1 and column_name2 values are getting used combined.
We can use the PostgreSQL DISTINCT ON clause or expression in order to maintain the “first” row for a group of duplicates from the result set using the following syntax:
DISTINCT ON (column_name1) column_name_alias,
Explanation: The SELECT statement returns the randomly ordered rows hence the firstmost row of every resulting group is also random. So in order to make the resulting set obvious, we can use the DISTINCT ON clause along with the ORDER BY clause.
Examples of PostgreSQL DISTINCT
We will create a table of name ColorProperties. Also, add some data into the ColorProperties table for understanding the DISTINCT clause.
Use the following statement to create the ColorProperties table which consists of three columns:
- back_color and
CREATE TABLE ColorProperties (
color_id serial NOT NULL PRIMARY KEY,
- We will insert some rows into the ColorProperties table with the help of the INSERT statement as follows:
INSERT INTO ColorProperties (back_color, fore_color)
- Now retrieve the data from the ColorProperties table with the help of the SELECT statement as follows:
Output: After executing the above statement we will following the result.
1. Single One Column
In order to fetch the unique values of the column named fore_color, we will use the following statement. Also to sort output results in alphabetical order we will use the ORDER BY clause for the values in the fore_color column.
2. Multiple Columns
Let’s understand how to use the DISTINCT clause on multiple columns using the following statement:
- As SELECT DISTINCT clause contains back_color and fore_color so for removing the duplicate rows of the result set the PostgreSQL combines values of both columns back_color and fore_color etc.
- The PostgreSQL statement will give us the unique values for both columns back_color and fore_color from the ColorProperties table. RED COLOR is present in both columns back_color and fore_color into the ColorProperties table. As we added back_color and fore_color with the DISTINCT clause, only one-row entry kept for duplicate rows.
3. PostgreSQL with DISTINCT ON
In order to get the sorted result set, we should define the statement as follows which will remove all duplicate rows and keep a one-row entry for all.
4. Multiple Tables
Let’s consider we have two tables named: students and departments.
CREATE TABLE students (
name text not null,
department_id text not null,
CONSTRAINT students_pk PRIMARY KEY (name)
INSERT INTO students (name, department_id) VALUES
CREATE TABLE departments (
department_id text not null,
department_name text not null
INSERT INTO departments (department_id, department_name) VALUES
Let’s have a look at the following statement which joins student and department tables.
SELECT DISTINCT ON (s.department_id) s.department_id, s.name, d.department_name
FROM students s
JOIN departments d ON d.department_id = s.department_id
ORDER BY s.department_id DESC
- In the above statement, we have defined an expression (s.department_id) for a DISTINCT ON clause to ORDER the result set.
We hope from the above article you have understood how to use PostgreSQL SELECT DISTINCT statement in order to return unique rows by removing duplicate rows from the result set.
This is a guide to PostgreSQL DISTINCT. Here we discuss Syntax and various examples of PostgreSQL DISTINCT with appropriate codes and output. You can also go through our other related articles to learn more –