mysql错误消息1_MySQL出错信息: Subquery returns more than 1 row及其解决方法

- 问题: 查询当"课程" 等于子查询里面的课程信息

- 出错指令: [Err] 1242 - Subquery returns more than 1 row

开始出错时的SQL

-- 省略部分

CASE WHEN kcmc = (SELECTkcmcFROM t_sdrs_xscj WHERE xh in (2013210254)AND KCMC NOT IN(SELECT kk.kcmc FROM(SELECT kcmc,max(CJ) mcjFROM t_sdrs_xscj WHERE xh in (2013210254)

GROUP BYkcmcHAVING COUNT(kcmc)=2)kk

-- 省略部分

- 报错信息:

ERROR 1242 (21000): Subquery returns more than 1 row

- 报错信息翻译:

子查询返回超过1行

- 分析与解决方法:

1. 在重复写入时会出现这种问题, 可通过去掉重复数据解决

- 通过在写入时加逻辑判断或者外键防止数据重复写入

2. 利用IN、SOME、ANY、ALL关键字进行限制

- 报错信息出自子查询, 因此需要对子查询涉及指令进行条件修改

最终解决后的SQL

--省略部分

CASE

WHEN kcmc IN(SELECTkcmcFROM t_sdrs_xscj WHERE xh in (2013210254)AND KCMC NOT IN(SELECT kk.kcmc FROM(SELECT kcmc,max(CJ) mcjFROM t_sdrs_xscj WHERE xh in (2013210254) GROUP BYkcmcHAVING COUNT(kcmc)=2)kk--省略部分

//其实就是将"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值