当前位置:   article > 正文

mysql exists 和not exists 联合使用的bug

mysql exists 和not exists 联合使用的bug
  1. select * from student a
  2. where a.age>15
  3. and
  4. exists(select 1 from score s where s.student_id = a.id and s.name='数学')
  5. and
  6. not exists (select 1 from score s where s.student_id=a.id and s.name<>'语文')

以上语句的含义:

查询出年龄大于15岁的并且参加过数学考试 但是没有参加过语文考试的学生。

也许会说这没有问题,但是当score表中有多条数据时,查询的结果就会出现重复的数据。

解决办法:

将not exists 换成 not in 

  1. select * from student a
  2. where a.age>15
  3. and
  4. exists(select 1 from score s where s.student_id = a.id and s.name='数学')
  5. and
  6. a.id not in (select s.student_id from score s where s.name<>'语文')

为什么查询结果会出现重复的数据,具体原因未知。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/324530
推荐阅读
相关标签
  

闽ICP备14008679号