你好,我是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选择
感谢。
答案 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