按要求写SQL语句,需支持MySQL,求大腿
怪我咯
怪我咯 2017-04-17 11:34:18
0
4
490

表persons:
name  |  phone
--------------------
hello   |  123
hello   |  123
hello   |  456
hello   |  789
kitty    |  234
check |  777
check |  777
--------------------

现要求写出SQL语句,要求查询:
1. 只拥有一个电话的人
2. 去除重复的记录

PS:语句要求支持MySQL

预期结果:
name  |  phone
--------------------
kitty    |  234
check |  777
--------------------

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(4)
黄舟

來個最常規的吧, 先去重, 再做分組.

select name, phone from 
    (select distinct name, phone from persons) T
group by name
having count(*) = 1;

看了樓主的答案, 受啟發了, 這麼寫也可以的:

select name, phone from persons
group by name
having count(distinct phone) = 1;
PHPzhong
select distinct a.name, b.phone 
    from (
         select name , count(distinct phone) 
          from persons group by name                     
         having count(distinct phone) = 1) a 
    inner join persons b on( a.name = b.name)

但這個我沒有實際測試,你可以修改下

把本意的寫法,糾正了過來, 感謝樓主的提醒。當然 @brayden 的寫法好很多,推薦他的,學了

刘奇

看了brayden的語句,發現自己功力嚴重不夠=.=,但是本著不刪回答的原則,還是把我的語句保留給大家當反面教材吧


自己琢磨寫出來了,就是不知道效率如何:

select b.name,a.phone from persons a 
    inner join
        (select name,count(distinct phone) pcount 
            from persons
            group by name
            having cn=1) b
where b.name=a.name
group by a.name
Peter_Zhu

好久沒有寫sql了,我剛才也試著寫了一下,感覺應該不是太好,雖然出了結果:

SELECT name, phone from (SELECT DISTINCT(phone), name FROMsegment) A GROUP BY name HAVING COUNT(name) = 1

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!