如何在PostgreSQL中加入两个子查询的结果?

时间:2010-01-16 08:20:28

标签: sql postgresql join subquery

你好,我是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选择

感谢。

1 个答案:

答案 0 :(得分:9)

您将无法使用distinct关键字,因为您实际上还想从contact_id表中选择all_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