Для этого вы можете использовать оконные функции:
select t.*
from (select t.*,
row_number() over (partition by phone, name order by id) as seqnum,
min(id) over (partition by phone) as min_id,
max(id) over (partition by phone) as max_id
from t
) t
where seqnum = 1 and min_id <> max_id;
Другой метод использует агрегацию и оконную функцию:
select phone, name, id
from (select phone, name, id,
count(*) over (partition by phone) as num_ids
from t
group by phone, name, id
) pn
where num_ids > 1;
Оба имеют преимущество перед существующим решением (GMB's) что они ссылаются на «таблицу» только один раз. Это может быть большим преимуществом, если таблица представляет собой сложное представление или запрос. Если производительность является проблемой, я бы посоветовал вам протестировать несколько вариантов, чтобы увидеть, какой из них лучше всего работает.