sql -- 查找电话相同的人的姓名

本文介绍了三种查询电话号码重复的SQL方法,并对比了它们的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


                    今天遇到了一个SQL语句的问题,现有一张表,表名为t_people。表数据如下所示:

                   

                   要求:查询电话相同的人的姓名


                  刚看到这个问题的时候,我还有点犯晕(请不要嘲笑,确实我技术比较菜),然后自然只能上网查喽,查到类似的案例有两种方式。

                  第一种:SELECT p1.* FROM t_people p1 INNER JOIN t_people p2 ON p1.phone = p2.phone AND p1.id <> p2.id

                  结果耗时0.002s,如下所示:

                  

                 第二种:SELECT * FROM t_people WHERE phone IN (SELECT phone FROM t_people GROUP BY phone HAVING COUNT(*) > 1)

                结果耗时0.009s,如下所示:

                 

               第三种:SELECT id,NAME,phone,(SELECT COUNT(*) FROM t_people p2 WHERE p1.phone = p2.phone)AS total FROM t_people p1 HAVING total > 1

               结果耗时0.001s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值