2

你好,我是 sql (postgresql) 的新手,
我有 2 个表,因为2 个不同的选择

       all calls                    our customer contacts
   number contact_id      and     contact_id    name
    3213      12                        12     jonh
    3213      34                        16     michael
    3213      43                        65     hewlet
    5432      16                        32     steward
    5432      51
    6543      65
    2322      54
    2322      32

1 个号码可以属于不同的联系人...(联系人属于不同的客户)我需要从第一个结果表中选择不同的号码。以及来自第二张表的联系人的姓名..

以及我必须如何结合我的 2 个选择

谢谢。

4

1 回答 1

10

您将无法使用distinct关键字,因为您实际上还想contact_idall_calls表中选择 。相反,您将需要使用其中一个聚合函数来contact_id为每个不同的电话号码选择一个。

在此示例中,我使用该min()函数,它将为我contact_id提供每个电话号码数字最低的联系人:

select tmp.number, contacts.name
from (
  select number, min(contact_id) as min_id
  from all_calls
  group by number
) as tmp
join contacts on tmp.min_id = contacts.contact_id
于 2010-01-16T08:26:33.267 回答