1.取二个结果集的交集
1)第一种方法:利用操作符intersect
intersect操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是两个查询的列的数量和数据类型必须完全相同。
举例说明:
表A的数据结构:
中文名称 | 字段名 | 类型 | 长度 |
学号 | code | C | 4 |
姓名 | name | C | 8 |
表B的数据结构:
中文名称 | 字段名 | 类型 | 长度 |
学号 | Student_code | C | 4 |
姓名 | Student_name | C | 8 |
分数 | score | N | 3 |
表A的数据为:
('1101 ','韩甲'),('1102 ','丁乙')
表B的数据为:
('1101 ','韩甲',99),('1102 ','丁乙',89),('1103 ','徐静',94)
在oracle中运行以下查询,图1显示了这个查询的结果:
SQL>select code, name from A intersect select student_code,student_name from B; |
![]() 图1使用intersect操作符查询的结果 |
in子句可以在子查询中为where子句计算所得的值创建一个列表。这种方法与前一种方法有所不同的是,前一种方法比较多列但只使用一个intersect就行了,而一个in子句用来比较两个子查询的一列,比较几列就要使用几个in子句。下面举例说明如何取得两个查询的交集。
仍以A和B两张数据表为例,在oracle中运行以下查询,图2显示了这个查询的结果:
SQL>select code,name from A where A.code in (select student_code from B) and A.name in (select student_name from B) order by A.code; |
查询结果如图2所示。
![]() 图2使用in子句查询的结果 2.取二个结果集的并集 minus运算:返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。(并集) union 取并集 去掉重复的 union all 取并集 仅仅结果集合并 3.Oracle merge into 用法及例子 语法: MERGE [hint] INTO [schema .] table [t_alias]
USING [schema .] { table | view | subquery } [t_alias]
ON ( condition ) WHEN MATCHED THEN merge_update_clause WHEN NOT MATCHED THEN merge_insert_clause; EXAMPLE: merge into tj_test1 tt1 using tj_test tt on (tt1.id=tt.id) when matched then update set tt1.name=tt.name, tt1.age=tt.age when not matched then insert values( tt.id, tt.name, tt.age)
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17179887/viewspace-677133/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17179887/viewspace-677133/