当前位置: 首页 > news >正文

MySQL/MariaDB 查询某个 / 多个字段重复数据

创建测试表和数据

# 创建表
create table if not exists t_duplicate (name varchar(255) not null,age int not null
);# 插入测试数据
insert into t_duplicate(name, age) values('a', 1);
insert into t_duplicate(name, age) values('a', 2);

查询单个字段重复

使用 count() 函数、group by 分组和 having 分组后筛选

select name, count(*) count
from t_duplicate
group by name
having count > 1;
  • group by name:根据 name 字段分组。
  • count(*):计算每个分组的记录数量。
  • having count > 1:在分组后筛选分组的记录数 > 1 的分组。

查询结果:

namecount
a2

使用子查询和 in 函数

select *
from t_duplicate
where name in (select namefrom t_duplicategroup by namehaving count(*) > 1
)
  • 子查询:根据 name 分组,筛选分组的记录数 > 1 的分组,即查询重复的 name
  • 外部查询:用 in 筛选 name 重复的记录。

查询结果:

nameage
a1
a2

使用窗口函数 over 和 partition by 分区

select `name`, count
from (select name, (count(*) over (partition by name)) as countfrom t_duplicate
) t
where count > 1
  • partition by name:按照 name 字段分区,相同的 name 值在一个分区。
  • count(*) over:计算每个分区的记录数。
  • count > 1:筛选分区记录数 > 1 的数据。

查询结果:

namecount
a2
a2

查询多个字段重复

……

http://www.lryc.cn/news/162930.html

相关文章:

  • 【力扣每日一题】2023.9.10 课程表Ⅱ
  • VSCODE CMAKE C++ 工程调试, C++不以科学计数法输出并控制小数位数
  • Drools规则引擎入门学习记录
  • 肖sir__设计测试用例方法之判定表06_(黑盒测试)
  • <图像处理> 空间滤波基础
  • 如何在Django中使用django-crontab启动定时任务、关闭任务以及关闭指定任务
  • mysql配置项整理
  • 【KRouter】一个简单且轻量级的Kotlin Routing框架
  • 时间管理类书籍阅读笔记
  • CSS文字居中对齐学习
  • 《论文阅读》CARE:通过条件图生成的共情回复因果关系推理 EMNLP 2022
  • React 开发一个移动端项目(1)
  • c#查看代码的执行耗时( Stopwatch )
  • Python网络爬虫库:轻松提取网页数据的利器
  • YOLOv5算法改进(15)— 更换Neck之AFPN
  • Vue2项目练手——通用后台管理项目第七节
  • 《Web安全基础》04. 文件操作安全
  • docker-compose安装nginx
  • 报错处理:MySQL无法启动
  • Vue中表单手机号验证与手机号归属地查询
  • 初高(重要的是高中)中数学知识点综合
  • Fiddler 系列教程(二) Composer创建和发送HTTP Request跟手机抓包
  • 淘宝平台开放接口API接口
  • 缓存夺命连环问
  • 模型生成自动化测试用例
  • 归并排序-面试例子
  • docker 生成镜像的几个问题
  • 云计算时代的采集利器
  • 【Unity编辑器扩展】| Inspector监视器面板扩展
  • Redis配置