`

从一个表中查找另一表没有的记录

阅读更多
引用

   如果要从一个表中查询另一个表不存在的记录,这样的情况从不同数据的角度去分析,有些数据库提供了差集的函数,有些没有要写子查询。

1、DB2、postgreSQL差集函数except
select deptno from emp
except
select deptno from dept

2、Oracle的差集函数minus
select deptno from emp
minus
select deptno from dept

3、Mysql和sqlserver不支持差集函数,使用子查询
select deptno from dept where deptno not in (select deptno from emp)

但是使用not in的时候一定要注意null值的问题,in 和not in操作里面相当于or操作。
如果
   select deptno from dept where deptno not in (10,20,null)
这样等效于
   select deptno from dept where deptno not (deptno =10 or deptno = 20 or deptno =null)

not (deptno =10 or deptno = 20 or deptno =null) = (false or false or null)=(false or null)

在SQL中,TRUE or null的结果是true,而false or null的结果是null,所以在使用in谓词和or计算时,值可能是null的情况,这一点要记住。
要解决这样问题,可以使用not Exists和相关子查询
select deptno from dept d where not exists(select 'xx' from emp e where e.deptno = d.deptno)


分享到:
评论

相关推荐

    如何查出同一张表中字段值重复的记录

    这段代码首先使用 `SELECT DISTINCT *` 创建了一个不含重复记录的新表 `table_new`,接着清空原表 `table1`,最后将新表的数据插入到原表中。 #### 3.2 处理复杂重复情况 对于更复杂的重复情况,比如包含多个字段的...

    数据结构实验 折半查找的有关操作

    - `BinSrch` 函数是折半查找的实现,它接收一个`RecordList`和一个`KeyType`作为参数,返回找到的元素在表中的位置,如果没有找到则返回0。 - `main` 函数是程序的入口,它先调用`createlist`创建列表,然后让用户...

    在母串中查找某子串出现的最后位置

    在给定的标题“在母串中查找某子串出现的最后位置”中,我们要解决的问题是在一个主字符串(母串)中找到一个特定子字符串(子串)最后一次出现的索引位置。这个任务要求我们不依赖标准模板库(STL),这意味着我们...

    Hash查找程序代码的C实现

    在给定的C语言实现中,程序使用了两个哈希表,一个用于存储姓名,另一个用于存储电话号码。这种方法可以提高查找效率,因为哈希函数将关键字转换为数组索引,使得查找操作接近于常数时间复杂度。 首先,定义了一个...

    数据结构7.2顺序查找技术

    在顺序查找技术中,算法从线性表的一端开始,逐个与给定值进行比较,若找到相等的关键码,则返回该元素在表中的位置;若遍历完整个表都未找到,则返回失败信息。在C++实现中,可以通过一个循环来完成顺序查找的过程...

    Delphi +SQL查询主表键值在其它表中出现的记录数

    例如,如果我们有一个名为`Customers`的主表,其主键为`CustomerID`,另一个名为`Orders`的表,其中`CustomerID`作为外键,我们想要知道每个客户在`Orders`表中有多少订单,可以编写以下SQL查询: ```sql SELECT ...

    用公式查找Excel工作表中重复数据.docx

    - **IF函数**:条件判断函数,如果指定条件满足,则返回一个值,否则返回另一个值。 - **ROW函数**:返回单元格的行号,可以作为索引来使用。 - **IFERROR函数**:检查表达式是否出错,如果没有错误,则返回表达式的...

    数据结构实验

    编写程序构造一个有序表La,从键盘接收一个关键字key,用二分查找法在La 中查找key,若找到则提示查找成功并输出key所在的位置,否则提示没有找到信息。 2.编写程序实现Hash表的建立、删除、插入以及查找操作。 ...

    在MySQL中同时查找两张表中的数据的示例

    如果我们希望在一个报告中同时显示每个客户的销售订单以及他们对应的销售区域,就需要将这两张表的数据结合在一起。 在这个示例中,使用了存储过程来完成这个任务。存储过程是一种预编译的SQL代码集合,可以在需要...

    设计哈希表实现电话号码查询系统

    当两个或多个记录映射到同一个哈希槽时,再哈希法会使用另一个哈希函数重新计算索引,直到找到一个未被占用的槽位。在这个系统中,有两个哈希函数:`hash`和`hash2`。`hash`函数根据电话号码的后几位计算哈希值,`...

    折半查找(二分查找).md

    **快速排序**是一种非常高效的排序算法,它的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。...

    经典表关联与多表查询终稿.pdf

    外连接的一个关键特性是,即使在另一个表中没有匹配的公共字段值,也能返回数据。例如,查询所有员工的项目、部门名称和部门位置,包括没有分配部门的员工: ```sql SELECT a.ename, b.dname, b.loc FROM emp a ...

    SQL:第四章_从多个表显示数据.ppt

    外部连接(Outer join)进一步扩展了连接类型,它会返回所有来自一个表的记录,即使没有在另一个表中找到匹配的记录。这分为左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL OUTER JOIN)。左外连接...

    SQL教程之SELECT语句中的表连接

    然而,有时候我们可能需要包含那些在其中一个表中但不在另一个表中的记录。这就引出了左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。 左连接返回所有左表(在例子中是`album`表)的记录,即使...

    from 多张表 等于 left join 其他表.

    如果某一行在其中一个表中有记录,但在另一个表中没有匹配记录,则该行不会出现在最终的结果集中。 - **左连接(LEFT JOIN)**:与内连接不同,左连接会返回左表(第一个表)的所有记录,即使右表(第二个表)中...

    数据结构C语言版链表的集合运算

    可以先遍历其中一个链表,然后在另一个链表中查找是否存在相同的元素,若不存在则添加至结果链表。 2. **交集(Intersection)**:交集是指两个集合共有的元素。处理交集时,需要同时遍历两个链表,当找到一个元素在...

    数据结构-知识点-查找.pdf

    查找是数据结构中的一个基本操作,它涉及到在一个数据集中定位一个特定的元素。本文档从标题来看,主要关注的是数据结构中的查找技术,特别是静态查找表的顺序查找、折半查找以及分块查找。 1. 静态查找表的顺序...

    数据结构课程的所有线性表,栈,二叉树,查找,实验

    - **路径**:从一个节点到另一个节点的节点序列。 - **深度**:从根节点到某个节点的路径上的节点数目。 #### 遍历方法 - **前序遍历**:访问根节点→递归地遍历左子树→递归地遍历右子树。 - **中序遍历**:递归地...

    arcgis工具

    使用一个属性字段作为超链 在内容表中右击包含一个超链接字段的图层,然后点击properties ,单击Display选项卡。选中Supprt Hyper3. Hyperlinks using field选项,单击下拉箭头并点击一个字段。 单击Document or URL...

    python实现MP4文件递归查找功能

    在这个场景中,我们关注的是如何使用Python来实现一个递归查找功能,特别是针对.mp4视频文件。递归查找允许程序在给定目录及其所有子目录中搜索特定类型的文件。这种功能在处理大量文件时非常有用,例如在多媒体管理...

Global site tag (gtag.js) - Google Analytics