【mysql】出错 Subquery returns more than 1 row

问题

查找出一下子查询返回超过1行

SELECT cc.id,DATE_FORMAT(cc.CREATE_TIME,'%Y%m%d') as day_id, 
IFNULL((select f.source FROM strong_contact_fea f where f.id = cc.id and STR_SPEC_ID='S2023091145'),'10501') as strong_prod_level_1,
IFNULL((select f.source from strong_contact_fea f where f.id = cc.id and STR_SPEC_ID='S2023091146'),'1050101') as strong_prod_level_2FROM strong_contact ccWHERE 1=1and cc.CREATE_TIME IS NOT NULLand cc.CREATE_TIME BETWEEN '2023-12-19 00:00:00' and '2023-12-20 00:00:00' 
  • 返回
子查询返回超过1行
> IP:PORT/STRONG | Subquery returns more than 1 row

排查

查询重复数据定位问题id单

	select f.id,count(*) num from strong_contact_fea f where  1=1  and STR_SPEC_ID='S2023091145' AND f.id in (SELECTcc.idFROM strong_contact ccWHERE 1=1and cc.CREATE_TIME IS NOT NULLand cc.CREATE_TIME BETWEEN '2023-12-19 00:00:00' and '2023-12-20 00:00:00' ) group by f.ID HAVING num>1

处理

子查询添加limit 1

SELECT cc.id,DATE_FORMAT(cc.CREATE_TIME,'%Y%m%d') as day_id, 
IFNULL((select f.source FROM strong_contact_fea f where f.id = cc.id and STR_SPEC_ID='S2023091145' limit 1),'10501') as strong_prod_level_1,
IFNULL((select f.source from strong_contact_fea f where f.id = cc.id and STR_SPEC_ID='S2023091146' limit 1),'1050101') as strong_prod_level_2FROM strong_contact ccWHERE 1=1and cc.CREATE_TIME IS NOT NULLand cc.CREATE_TIME BETWEEN '2023-12-19 00:00:00' and '2023-12-20 00:00:00' 

根治

上面是写兼容查询limit 1方式处理,但是真正的源头是来自逻辑代码错误导致数据重复产生,功能修复,原先数据毕竟生产珍贵数据,所以我们这里需要进行去重处理。

注意:生产去重进行删除数据前,先查询备份,然后在删除;备份,就是保命。

  • TASK231220lukcy-2023-12-20_测试.sql
/* 查询关联重复的数据 */
select tb.biz_id as key_biz_id, tb.str_spec_id as key_str_spec_id, ccf.* from (/* 根据biz_id和str_spec_id关联工单 begin */select f.biz_id,f.str_spec_id,count(*) num from strong_contact_fea f where 1=1 and str_spec_id in ('s2023091145')and f.biz_id in ( select cc.biz_id from strong_contact ccwhere 1=1 and cc.create_time is not nulland cc.create_time between '2023-12-20 00:00:00' and '2023-12-21 00:00:00') group by f.biz_id ,f.str_spec_id having num>1/* 根据biz_id和str_spec_id关联工单 end */
) tb left join strong_contact_fea ccf on tb.biz_id = ccf.biz_id and tb.str_spec_id = ccf.str_spec_id where 1=1;/*先备份导出,然后删除(select *)改成(delete)*/
select * from strong_contact_fea where str_id in (/* 最终删除的查询数据【str_id】*/select ccf.str_id from (/* 根据biz_id和str_spec_id关联工单 begin */select f.biz_id,f.str_spec_id,count(*) num from strong_contact_fea f where 1=1 and str_spec_id in ('s2023091145')and f.biz_id in ( select cc.biz_id from strong_contact ccwhere 1=1 and cc.create_time is not nulland cc.create_time between '2023-12-20 00:00:00' and '2023-12-21 00:00:00') group by f.biz_id ,f.str_spec_id having num>1/*根据biz_id和str_spec_id关联工单 end */) tb left join strong_contact_fea ccf on tb.biz_id = ccf.biz_id and tb.str_spec_id = ccf.str_spec_id where 1=1and str_id not in (select min(str_id) as str_id from (/* 根据biz_id和str_spec_id关联工单 begin */select f.biz_id,f.str_spec_id,count(*) num from strong_contact_fea f where 1=1 and str_spec_id in ('s2023091145')and f.biz_id in ( select cc.biz_id from strong_contact ccwhere 1=1 and cc.create_time is not nulland cc.create_time between '2023-12-20 00:00:00' and '2023-12-21 00:00:00') group by f.biz_id ,f.str_spec_id having num>1/* 根据biz_id和str_spec_id关联工单 end */) tb left join strong_contact_fea ccf on tb.biz_id = ccf.biz_id and tb.str_spec_id = ccf.str_spec_idwhere 1=1 group by tb.biz_id,tb.str_spec_id)
);

写法拆解

  1. 数据量大,查询需要时间索引,所以用传统方式查询,防止索引失效性能问题
    and cc.CREATE_DATE BETWEEN '2023-12-20 00:00:00' and '2023-12-21 00:00:00'
  2. 查询重复,查询出重复数据
    select f.id_a,f.id_b,count(*) num from table_a f where 1=1 group by f.id_a,f.id_b having num>1
  3. 查询关联,查询关键业务单号关联数据 select a.*,b.* from table_a a left join table_b b on a.id_1=b.id_1 and a.type=b.type
  4. 查询排查,查询数据保留其中一条,唯一值最小或者最大值处理
    select MIN(FEA_ID) AS FEA_ID from (对应表) WHERE 1=1 GROUP BY tb.cont_id,tb.FEA_SPEC_ID
  5. 查询移除,查询移除的数据
    select * FROM strong_contact_fea where str_id in () and str_id not in (不允许移除的)
  6. 查询备份
    导出、备份都可以
  7. 查询删除,处理数据
    delete from (查询移除数据)

参考

MySQL出错信息: Subquery returns more than 1 row及其解决方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python---端口和端口号的介绍

1. 问题思考 不同电脑上的飞秋之间进行数据通信,它是如何保证把数据给飞秋而不是给其它软件呢? 其实,每运行一个网络程序都会有一个端口,想要给对应的程序发送数据,找到对应的端口即可。 端口效果图: 2. 什么是端口 端口是传…

iOS将framework转为xcframework

拆分framework 先把framework拷贝到两个文件夹下边,这里只需要armv7、arm64、x86_64。 mkdir iphoneos iphonesimulator cp -R mysdk.framework iphoneos cp -R mysdk.framework iphonesimulator 把iphoneos中的模拟器指令集删除,只保留armv7和arm64 …

电巢助力第十届图像技术高峰论坛圆满落幕,回顾西电与电巢的校企合作四年硕果累累

图像技术高峰论坛圆满落幕 12月17日,由中国图象图形学学会、陕西省科学技术协会主办、西安电子科技大学通信工程学院、陕西省创新驱动共同体承办的“第十届图像技术高峰论坛暨陕西第五届图像处理与分析研讨会”在陕西西安成功举办。电巢科技作为本次论坛的承办单位&…

某电子文档安全管理系统 SQL注入漏洞复现

漏洞介绍 亿赛通电子文档安全管理系统 (简称: CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护…

RHCE8 资料整理(十二)

RHCE8 资料整理 第 33 章 jinja2模板的使用31.1 if 判断33.2 for循环33.3 handlers 第 33 章 jinja2模板的使用 详细参考 https://blog.csdn.net/u010230019/article/details/128561872 https://blog.csdn.net/u010230019/article/details/128477679 假设目前Nginx的配置文件在…

未来仓储新玩法小空间做大文章

身处智能消费时代的大家都应该有深刻感受,物流速度在逐年增快。根据国家邮政局预估,2020 年快递业务吞吐量超 740 亿件,同比增长 18%。 面对日益增加的商品交付量,不得不重新定义产品分销方式,从而满足当今互联网消费…

从零开始学HBase:打造你的大数据技能库!

介绍:HBase是一个分布式的、面向列的开源数据库,源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。类似于Bigtable利用了Google文件系统(File System)提供的分布式数据存储,H…

<八>JavaScript中的对象及对像的增删改查

使用基本数据变量所创建的变量都是独立的,不能成为一个整体,对象属于复合型的数据类型,在对象中可以保存多个不同的数据类型的属性。 一、对象的分类 1.1内建对象 由ES标准中定义的对象 比如:Match、String、Number、Boolean、…

【Qt】Qt Creator 警告: Unused parameter ‘xxx‘

1. 问题 Qt开发中,有些函数参数没有使用,会报Unused parameter xxx警告,这个警告不影响代码正常运行。 2. 屏蔽这个警告的方法 2.1 方法1 函数中添加 Q_UNUSED(arg); TestClass::TestClass(QObject *parent) {Q_UNUSED(parent); }2.2 方…

【AI-2】深度学习框架详解

目前,有许多流行的深度学习框架可供选择,下面列举一些常见的深度学习框架: TensorFlow(Google) TensorFlow:由Google开发的开源深度学习框架,提供了丰富的工具和库,支持各种深度学…

IP查询类API接口查询,含各精度IP归属地查询接口

IP查询 IP归属地-IPv4高精版:根据IP地址查询归属地信息,支持到中国地区(不含港台地区)街道级别,包含国家、省、市、区县、详细地址和运营商等信息。IP归属地-IPv4区县级:根据IP地址查询归属地信息&#xf…

华为atlas300安装教程

1、安装包位置: /data/ai_install_packages 2、添加HwHiAiUser用户: groupadd -g 1000 HwHiAiUser useradd -g HwHiAiUser -u 1000 -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash 3、安装驱动: ./Ascend-hdk-310p-npu-driver_6.0.0_l…

前端FLV视频直播解决方案

项目背景: 1. 后台给出一个地址,持续不断的推送flv视频流。 2.前端需要接收视频流,并寻找合适的播放插件。 一开始: 其实用的是xgplayer(西瓜视频)。 官网地址:西瓜播放器 使用的是直播&a…

【10大专题,2.8w字详解】:从张量开始到GPT的《动手学深度学习》要点笔记

《动手学深度学习PyTorch版》复习要点全记录 📘 🎯 专注于查漏补缺、巩固基础,这份笔记将带你深入理解深度学习的核心概念。通过一系列精心整理的小专题,逐步构建起你的AI知识框架。 🧠 从最基础的张量操作&#xff0c…

DELL MD3600F更换控制器电池

1、存储左上角闪红灯,管理软件提示控制器1电池故障,需取出控制器更换上新电池。 2、通过管理软件确认两个控制器编号;确认到下面的是控制器1 3、拔掉控制器上插的线(SAS线、网线、光纤线),打好标签&#xf…

外贸SEO建站系统有哪些?海洋建站的优势?

外贸SEO建站怎么做比较好?如何做谷歌独立站SEO优化? 外贸企业越来越需要建立自己的在线形象,以吸引更多的潜在客户。而要实现这一目标,外贸SEO建站系统是一种非常有效的手段。那么,外贸SEO建站系统有哪些呢&#xff1…

常见 平滑函数

平滑函数是指具有较为连续和缓和性质的数学函数。这类函数通常在局部小范围内变化不大,避免了突变或者急剧的波动。以下是一些常见的平滑函数: 高斯函数(Gaussian Function) 高斯函数是一种常见的平滑函数,具有钟形曲…

LeetCode day28

LeetCode day28 由于一点小意外,今天就来搞搞滑动窗口(ง •_•)ง 1423. 可获得的最大点数 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,…

五、从0开始卷出一个新项目瑞萨RZN2L之RZT2L BaseProject coremark的移植

感谢来自b站热心帅气的同学分享的RZT2L移植经验总结的md文档 1 需要注意的小点 1.1 使用Flash运行调试前,新板子需要erase 1.2 在线debug,需要修改startup.c 2 coremark工程建立 2.1 工程创建 2.2 src 用户c代码移植 2.3 debug调试 …

HAL TIM2的PWM

main函数跑下面代码就行 懂的就懂,不讲原理,自己看 MX_TIM2_Init(7,999);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,500);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,500);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_3,500);__HAL_TIM_…