select distinct
is a statement that ensures that the result set has no duplicate rows. That is, it filters out rows where every column is the same (and NULL
values are considered equal).
It does not look at a subset of columns.
Sometimes, people use select distinct
and don't realize that it applies to all columns. It is rather amusing when the first column is in parentheses -- as if parentheses make a difference (they don't).
Then, you might also have situations where values look the same but are not.
Consider this simple example where values differ by only a space as the end of string:
select distinct x
from (select 'a' as x union all
select 'a '
) y;
Here is a db<>fiddle with this example.
This returns two rows, not 1.
Without sample data it is hard to say which of these situations you are referring to. But the rows that you think are "identical" really are not.