代码之家  ›  专栏  ›  技术社区  ›  Falcon

如何在PostgreSQL中连接两个子查询的结果?

  •  2
  • Falcon  · 技术社区  · 15 年前

    你好,我是sql(postgresql)的新手
    结果 两个不同的选择

           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个号码可以属于不同的联系人(联系人属于不同的客户)我需要选择

    我必须如何团结我的两个选择

    1 回复  |  直到 15 年前
        1
  •  10
  •   Jørn Schou-Rode dscher    15 年前

    您将无法使用 distinct 关键字,因为您实际上还希望选择 contact_id all_calls 桌子相反,您需要使用一个聚合函数来选择单个 联系电话号码

    在本例中,我使用 min() 联系电话号码 对于每个电话号码:

    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