zoukankan      html  css  js  c++  java
  • 数据库中 关于不能用in 不能用exist 等关键字 查询不出现字段的问题

    这是之前在网上见到的一道题,后来心里略微想了想 觉得应该可能,所以就一闪而过了,之前去面试晨光的时候面试者问了我这道问题,当时也只是把自己的想法说了一下,可能因为当时面试的感觉不太好,面试官也没有追究细节(可能他觉得追究细节会显示他懂得太少于是就没有问我了吧 哈哈)

    题目有点绕   我写个简单的例子 大家就都懂了

    学生表  A

    ID   NAME

    1    tom

    1    tom

    2    jerry

    3    henry

    3     henry

    学生表  B

    ID    NAME

    1    TOM  

    2   JERRY

    请问如何在不使用 in exist 等关键字的情况下   筛选出   在B表中不存在的A表中剩余的学生呢    


    当时的想法很简单 很直观  

    首先做出 a  left join b  之后的表  然后再做出  a inner join b 的表  

    用这两个结果表   进行 差(减) 运算之后 剩余的  就是 没出现过的了,感觉好像可行,但是深思就觉得不行了,因为问题就处在  怎么做这个差运算上。后来问了几个同事  一直没有结果,今天正好问了一位leader    

    他想了一下  告诉我说  其实很简单的  

    就是  左连之后    加入一个 判断条件    右边剩余的 字段   需要为 null    那么这样的  结果就是 右边不存在的结果 

    sql 可以为 

    select a.*,b.* from a left join b on a.id=b.id 

    where b.id is null

    select  里边可以再加个   distinct 更友好一点    


     

  • 相关阅读:
    mysql函数取出单个字段重新组成一维数组
    《数字集成电路静态时序分析基础》笔记①
    MexgZABoRn
    备战秋招-手撕代码篇
    芯片岗实习面经(2020暑期实习)
    备战秋招-指导篇
    备战秋招[六]-FIFO深度计算
    将博客搬至CSDN
    备战秋招[五]-异步FIFO
    备战秋招[四]-复位
  • 原文地址:https://www.cnblogs.com/jilodream/p/4219819.html
Copyright © 2011-2022 走看看