ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle结果集处理

Oracle结果集处理

原创 Linux操作系统 作者:chwang1984 时间:2010-11-01 10:37:39 0 删除 编辑

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操作符查询的结果
2)第二种方法: in子句
  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博客 ” ,链接:https://blog.itpub.net/17179887/viewspace-677133/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-27

  • 博文量
    96
  • 访问量
    185873