蝉看见后合金 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日

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆