蝉看见后合金 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 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000