Bootstrap

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--省略部分

//其实就是将"

;