`
Ben.Sin
  • 浏览: 233174 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle 取两个表中数据的交集

阅读更多

Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据

例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了

employee

CODE

NAME

GENDER

001 Tom M
002 Jerry M
003 Ana F

salary

CODE

SALARY

001 2800
002 2500
003 3000

方法1:利用操作符INTERSECT

INTERSECT 操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是两个查询的列的数量和数据类型必须完全相同。

SELECT CODE FROM EMPLOYEE WHERE GENDER = 'M'
INTERSECT
SELECT CODE FROM SALARY WHERE SALARY > 2500

第一条SQL的结果为

CODE
----------
001
002

第二条SQL的结果为

CODE
----------
001
003

INTERSECT的结果

CODE
----------
001

方法2:利用关系SQL

SELECT A.CODE FROM EMPLOYEE A, SALARY B
WHERE A.CODE = B.CODE AND A.GENDER = 'M' AND B.SALARY > 2500

结果为

CODE
----------
001

以上两种方法是本人比较常用的方法,尤其第二种,充分体现关系数据的精髓所在。但如果两个表结构比较复杂,而且关系条件也比较难实现的话,第一种显然能够简单地得到需要的结果,也不失为一种好方法。

分享到:
评论

相关推荐

    Oracle中对两个数据表交集查询简介

    本文主要探讨如何在Oracle中找到两个数据表的交集,即找出存在于两个表中的共同数据。交集查询对于数据分析和数据比对至关重要,尤其在合并或清理重复数据时。 首先,我们来看使用`INTERSECT`操作符的方法。`...

    Oracle对两个数据表交集的查询

    "了解 Oracle 对两个数据表交集的查询" Oracle 是世界上流行的关系数据库管理系统,它是一个极其强大、灵活和复杂的系统。今天,我们来介绍使用 SQL 查两个 Oracle 数据表查询的相同数据的方法,并对两个方法进行...

    oracle中取中间记录的方法

    ### Oracle中取中间记录的方法 在Oracle数据库中,有时候我们需要从数据表中选取特定范围内的记录,例如,如果我们想要获取第5到第10条记录(即中间的记录),这在实际应用中是非常常见的需求。本文将详细介绍如何...

    Oracle 两个逗号分割的字符串,获取交集、差集(sql实现过程解析)

    在Oracle SQL中,我们可以使用`INTERSECT`操作符来找到这两个字段中的共同元素。以下是一个示例: ```sql SELECT regexp_substr(id, '[^,]+', 1, rownum) id FROM ( SELECT '1,2,3,5' id FROM dual ) CONNECT BY ...

    oracle4的表查询和基本函数.docx

    UNION用于合并两个查询结果,去除重复行。例如,找出部门10的员工和工资超过2000的员工: ```sql SELECT * FROM EMP WHERE DEPTNO = 10 UNION SELECT * FROM EMP WHERE SAL > 2000; ``` UNION ALL则保留所有行,...

    oracle 关于字符串中带有逗号间隔的查询.doc

    但由于题目没有提供如何处理这种情况的明确指示,这里我们假设已经对数据进行了预处理,确保原始数据中不会出现"移动飞信"和"飞信移动"作为一个完整词组。 因此,结合上述条件,你可以使用以下查询语句: ```sql ...

    Oracle字符相似度函数

    在Oracle中,SIMILARITY()通常用于CLOB类型的字段,比较两个文本字符串的相似度。它的返回值范围在0到1之间,1表示完全相同,0表示完全不同。 2. **UTL_MATCH包**: - **JARO_WINKLER()**:此函数基于Jaro距离算法...

    oracle_sql笔记

    SQL中的JOIN操作用于合并来自两个或更多表的数据。内连接(INNER JOIN)返回匹配的行,左连接(LEFT JOIN)返回左表所有行及右表匹配行,右连接(RIGHT JOIN)反之,全连接(FULL JOIN)返回所有匹配和不匹配的行。 五、子...

    Oracle教程.docx

    * INTERSECT:实现两个独立查询的结果的交集 * MINUS:从一个结果集中减去另一个结果(也就是求差集) 8. 修改数据 * INSERT:在表中插入一行 * INSERT INTO SELECT:从查询结果中将数据插入到表中 * INSERT ...

    运用Java如何存取Oracle中的CLOB类型字段

    插入CLOB数据通常涉及两个步骤:首先插入一个空的CLOB对象,然后更新这个CLOB对象。在示例代码中,可以看到使用`empty_clob()`函数来创建一个空的CLOB对象,并通过`CLOB.setString()`方法向CLOB中写入数据。此外,还...

    ArcSDE Oracle SQL技术在矿业权空间数据叠加分析中的应用.pdf

    ST_Geometry类型提供了一系列的空间操作方法,例如判断两个几何对象是否相交(ST_Intersects)、获取几何对象的文本表示(ST_AsText)、计算两个几何对象的交集(ST_Intersection),以及获取几何对象的缓冲区(ST_...

    oracle常用查询语句示例

    在Oracle中,基础的SELECT语句用于从单个表中检索数据。例如: ```sql SELECT column1, column2 FROM table_name; ``` 这里的`column1`和`column2`是你想查询的列名,`table_name`是你要查询的表的名称。你可以使用...

    oracle 查询语句实例

    - `INNER JOIN`:返回两个表中匹配的行 - `LEFT JOIN`:返回左表的所有行,即使右表没有匹配的行 - `RIGHT JOIN`:返回右表的所有行,即使左表没有匹配的行 - `FULL OUTER JOIN`:返回所有不匹配的行 5. **子...

    Oracle高级sql学习与练习

    INTERSECT用来返回两个查询结果集的交集,而MINUS则返回第一个查询结果集相对于第二个查询结果集的差集。 2. EXISTS和NOT EXISTS子句通常用于子查询中,用以判断子查询返回的结果集是否为空。EXISTS子句在找到至少...

    Oracle集合操作函数union、intersect、minus.docx

    INTERSECT 操作符可以取两个结果集的交集。例如: SELECT id, name FROM worker INTERSECT SELECT empno, ename FROM emp; 在上面的例子中,INTERSECT 操作符将两个 SELECT 语句的结果合并成一个结果集,只保留...

    时间区间取并集Orace存储过程算法实现

    ##### 3.1 判断表中是否存在数据 ```sql SELECT COUNT(t.time_beg) INTO n_count FROM mege_data_tgt; IF n_count = 0 THEN INSERT INTO mege_data_tg (time_beg, time_end) VALUES (p_beg, p_end); COMMIT; ...

    oracle sql实例

    - `FULL JOIN`(或`FULL OUTER JOIN`):返回两个表中的所有行,如果某行在其中一个表中没有匹配,则用NULL填充。 4. **子查询** - 子查询可以嵌套在`SELECT`,`FROM`,`WHERE`或`HAVING`子句中,用于提供临时...

Global site tag (gtag.js) - Google Analytics