SQL 不同的检索同一记录的所有其他列

SQL DISTINCT RETRIEVING ALL OTHER COLUMNS OF THE SAME RECORD

我正在使用 PostgreSQL

我有一个 table,其中包含有关潜在客户的信息,如下所示:

ID | Phone        | link
1  | 3105637247   | https://link_for_id_1
2  | 3105637247   | https://link_for_id_2
3  | 3105637247   | https://link_for_id_3 
4  | 3153333651   | https://link_for_id_4
5  | 3153333651   | https://link_for_id_5

目的是使用此数据向销售团队报告。但是要求是不会有重复的phone个数字。在这种情况下,我想要的输出是:

ID | Phone        | link
1  | 3105637247   | https://link_for_id_1
5  | 3153333651   | https://link_for_id_5

为此,我正在使用此查询:

SELECT DISTINCT Phone,
                max(ID), -- Here using aggregated functions to allow ID and link to visualize
                max(link) 
FROM MyTable

但这种方法有时会给我提供与我的 ID 不对应的链接:

ID | Phone        | link
1  | 3105637247   | https://link_for_id_3
5  | 3153333651   | https://link_for_id_4

有没有办法在 ID 和 Link 对应同一记录的条件下检索唯一电话?

你可以使用 Postgresql 的 DISTINCT ON:

select distinct on (Phone) t.*
from Mytable t
order by Phone

或者NOT EXISTS:

select t.*
from Mytable t
where not exists (select 1 from Mytable t2
                  where t2.Phone = t1.Phone
                    and t2.id < t1.id)