练习MySQL联表查询时遇到这样一道题
- 问题: 查询"生物课程"比"物理课程"成绩高的所有学生的相关信息
- 出错指令:
- 报错信息:
ERROR 1242 (21000): Subquery returns more than 1 row
- 报错信息翻译:
子查询返回超过1行
- 分析与解决方法:
1. 在重复写入时会出现这种问题, 可通过去掉重复数据解决
- 通过在写入时加逻辑判断或者外键防止数据重复写入
2. 利用IN、SOME、ANY、ALL关键字进行限制
- 报错信息出自子查询, 因此需要对子查询涉及指令进行条件修改
- 最终解决指令:
补充
子查询就是指在一个SELECT语句中嵌套另一个SELECT语句
IN、SOME、ANY、ALL都是子查询涉及的关键词
- ANY可与= (>, >=, <, <=, <>)结合使用,分别表示等于(大于, 大于等于, 小于, 小于等于, 不等于)其中的任何一个数据
-- ANY关键字必须与一个比较操作符一起使用
-- ANY关键词可以理解为"对于子查询返回的列中的任一数值, 如果比较结果为True, 则返回True"
- ALL可与= (>, >=, <, <=, <>)结合使用,分别表示等于(大于, 大于等于, 小于, 小于等于, 不等于)其中的所有数据
-- ALL关键字必须与一个比较操作符一起使用
-- ALL关键词可以理解为"对于子查询返回的列中的所有值, 如果比较结果为True, 则返回True"
- 关键词IN 与关键词组合"=ANY"作用相同
- NOT IN 与 "<>ALL"用法与作用相同
以上就是本篇文章【MySQL出错信息: Subquery returns more than 1 row及其解决方法】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/3974.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多