蝉看见后合金 2021-10-27 09:40 采纳率: 50%
浏览 37
已结题

SQL nut in语句的实现原理是什么,为什么会出现那么多重复结果

select 顾客.顾客号,顾客.顾客姓名,顾客.邮编 from 主订单,顾客 where 顾客.顾客号 not in
(select 主订单.顾客号 from 主订单) and 顾客.城市='北京市' order by 顾客.邮编 desc

img

虽然知道distinct 可以去除重复结果,但是我想知道为什么会产生那么多重复结果
顾客表和主订单表的元素都是10个,每个结果元素重复个数也是10个,nut in的判断依据和原理是什么

如果是编程判断存在,那么我们也仅需要两个for或者while循环来判断,判断结果也不会出现那么多次重复。为什么这个会出现那么多重复
他是怎么完成判断的呢

  • 写回答

4条回答 默认 最新

  • CSDN专家-sinJack 2021-10-27 10:08
    关注

    两张表你用的是笛卡尔积查询。并没有建立两张表的关联。
    也就是表1的10条数据会跟表2的10条数据,都进行连接,没有条件过滤,最后会得到100条记录。
    你需要加上两张表之间的关联字段,比如说,顾客号作为关联字段。
    查询顾客号相同的记录,如果顾客表和主订单表中的顾客号是唯一的,那么最后得到的结果就是唯一的,得到10条记录。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记