数据库中 关于不能用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 更友好一点
如果你觉得写的不错,欢迎转载和点赞。 转载时请保留作者署名jilodream/王若伊_恩赐解脱(博客链接:http://www.cnblogs.com/jilodream/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)