求质数的语句问题

 表A存储了1-100的自然数(列名为num),以下为从表A中查询出质数的SQL语句,我不明白为什么能成功。我举个例子个表达我的疑问:当A1.NUM=10时,系统从A2中找到5时,5完全符合SELECT子句的条件,所以之前A1.NUM=5的这个数字最终应该会被NOT EXISTS从查询结果中去除,但为什么没有被去除呢? 这个是不是跟查询顺序有关,请大神解答一下,谢谢!

查询质数的语句:

SELECT A1.num  FROM A  AS A1 WHERE A1.num >1

AND NOT EXISTS

       (SELECT * FROM A AS A2

         WHERE A2.num <=A1.num/2   --除自身外的约数必定小于等于自身的一半

          AND A2.NUM<>1                    --约数不含1

          AND MOD(A1.NUM,A2.NUM)=0)  --除不尽的否定条件就是除尽

笑笑宝贝 发布于 2022-3-12 09:55 (编辑于 2022-3-16 20:57)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
zsh331Lv8专家互助
发布于2022-3-16 21:35(编辑于 2022-3-16 21:37)

- -这个是循环逻辑问题,A1.num从1~100以此判断…

——————————————

当A1.NUM=10时,系统从A2中找到5时,5完全符合SELECT子句的条件,所以「之前A1.NUM=5的这个数字最终应该会被NOT EXISTS从查询结果中」,应该将「A1.NUM=10」去除,和你所谓的之前A1.NUM=5(已判断)没有关系;

————————————————————

你把这个循环逻辑当if嵌套判断,「加粗黑体字」理解消化掉;

image.png

————————————

补充一点,加强理解!

A1.NUM=10时,你是「从A2中找到的5」,所以应该过滤掉A1.NUM=10这个值!

最佳回答
0
snrtuemcLv8专家互助
发布于2022-3-12 11:01
  • 3关注人数
  • 423浏览人数
  • 最后回答于:2022-3-16 21:37
    请选择关闭问题的原因
    确定 取消
    返回顶部