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

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

学生表  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 更友好一点

最新文章

  1. C#使用GET、POST请求获取结果
  2. 理解Cookie和Session机制(转)
  3. iOS 图形处理 Core Graphics Quartz2D 教程
  4. C#--静态字段
  5. Routine
  6. css中position属性(absolute|relative|static|fixed)概述及应用
  7. hdu1507二分匹配
  8. 使用Spring的注解方式实现AOP
  9. Java 7 命令/工具 jcmd 使用详细解释
  10. .net 程序员成长路线图?
  11. 在Spring中使用cache(EhCache的对象缓存和页面缓存)
  12. mysql存储过程讲解
  13. linux系统下安装apache与tomcat
  14. mysql的数据类型int、bigint、smallint 和 tinyint取值范围 及varchar
  15. input, textarea,监听输入事件
  16. Java 理论与实践: 处理 InterruptedException(转)
  17. Windows Cygwin Redis 安装(转)
  18. 半小时C语言题目
  19. python 网络编程粘包解决方案2 + ftp上传 + socketserver
  20. js 时间戳转换为‘yyyy-MM-dd hh:mm’格式(es6语法)

热门文章

  1. 《自制编程语言》笔记:使用yacc与lex制作简单计算器
  2. [LintCode] Coins in a Line II 一条线上的硬币之二
  3. JDBC连接池。。。转载
  4. AsyncTask的使用
  5. oauth2.0了解
  6. NGUI事件监听之UIEventListener的使用
  7. 在VS2012/2013上编辑和调试Quick-cocos2d-x的Lua代码
  8. java中的反射
  9. 《JAVA开发环境的熟悉》实验报告——20145337
  10. IOS第18天(7,CAKeyframeAnimation-图标抖动)