如何解决将多个电话号码条目合并为一个条目
我有phone_numbers
表,其中以userid
和phone_number_type
为基础存储条目。
用户数据
userid ??? username user_phone_no phone_number_type is_primary
---------------------------------------------------------------------
1 1 pranav 123456789 mobile True
2 1 pranav 456789000 office False
3 2 abc 11111111 home True
4 2 abc 555566677 mobile False
5 3 xyz 999555566 mobile True
6 3 xyz 446662223 mobile False
7 4 mmm 999555566 office True
8 4 mmm 4466623 home False
我进行了以下查询:
SELECT userid,user_phone_no,(
SELECT user_phone_no
FROM phone_numbers
WHERE phone_number_type ='mobile'
AND is_primary IS False
ORDER BY id ASC
LIMIT 1
) AS secondary_phone_no
FROM phone_numbers
WHERE phone_number_type ='mobile'
AND is_primary IS True;
它给我以下结果:
userid user_phone_no secondary_phone_no
------------------------------------------
1 123456789 456789000
2 11111111 555566677
3 999555566 446662223
4 999555566 4466623
预期结果是:
---------------------------
userid username mobile_no
---------------------------
1 pranav 123456789
2 abc 555566677
3 xyz 999555566
对于mmm
,结果不应该存在。
有什么方法可以达到预期的结果吗?
解决方法
使用此查询:
select
distinct on (userid)
userid,username,user_phone_no
from phone_numbers
where phone_number_type='mobile' order by userid,is_primary desc
,
就预期结果而言,您与is_primary
列和secondary_phone_no
无关,只是寻找每个username
升序排列的记录,并想给它们新鲜的{{ 1}}值。因此,请考虑将userid
解析函数用作
ROW_NUMBER()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。