在oracle中匹配特定值的两个表的两列

时间:2017-09-19 05:54:01

标签: database oracle

考虑有两个表: 表1和表2,它们都具有相同的属性,即ID,NAME,CLASS,STATUS。 这两个表格包含了学校所有学生的数据......但由两个独立机构管理。

根据唯一ID,我想检查所有学生,两个表中的数据是否相同。

我有兴趣检索两个表格中不匹配的数据,但是不想要不匹配的数据,其中学生的状态是“学校”。在两个表格中(如果状态是' lefttheschool'在一个表格中,'在其他表格中显示'在其他表格中,它是不匹配的,应该检索它。)

例如:

          TABLE1 ID NAME CLASS STATUS 
               1   A     3    PRESENT
               2   B     4    LEFT
               3   B     7    LEFT

        TABLE2 ID NAME CLASS STATUS 
               1   A     3    PRESENT
               2   C     4    PRESENT
               3   B     5    LEFT

        RESULT:ID NAME CLASS STATUS       ID NAME CLASS STATUS

               2   B     4    LEFT        2   C     4    PRESENT

1 个答案:

答案 0 :(得分:0)

当ID相同且其他属性不同时选择全部:

select table1.*, table2.*
  from table1, table2
 where table1.id = table2.id
   and ( table1.name <> table2.name or
       table1.class <> table2.class or table1.status <> table2.status)
   and (table1.status <>'LEFT' and table2.status <>'LEFT')