查询数据库中字段内容相同的记录

  昨天遇到了一个问题,查询用户表中所有用户名相同的记录。这个问题乍看很简单,但是细想起来没那么容易。头脑的第一反应就是读取一个条数据之后循环查找有没有相同的。。汗!!!这种方法肯定不行,这效率太低了。。。

  后来想到的方法是将用户表内联查找,如:

select u1.* from M_User u1,M_User u2 where u1.Name = u2.Name and u1.rowid <> u2.rowid

  这样发现解决问题,很开心的继续做其他的事儿了。。。

  

  但是当整个模块快做完了的时候测试了下,突然发现,当用户名相同的记录多余两个的时候会出现问题,每条记录会被查询出两次。比如id为1、2、3条记录的Name都是user1,那么1和3、2和3、1和2会被查询出来,也就是每条记录被查出来两次。这样是不行的,所以又回头想sql语句。

 

  最后经过经理的指点,可以使用group by 来做。

复制代码
select 
    * 
from 
    M_USER 
where 
    Name
in
    (select 
        Name ss 
    from 
        M_USER 
    where
        IsDeleted=0
    group by 
        Name having count(*)> 1 
    )
复制代码
posted @   zhangkai2237  阅读(10526)  评论(5编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示