找出oracle中具有不同列号的2个表之间的区别
Posted
技术标签:
【中文标题】找出oracle中具有不同列号的2个表之间的区别【英文标题】:find the difference between 2 tables in oracle with different column numbers 【发布时间】:2021-12-30 19:27:43 【问题描述】:我有 2 组不同的表格,有 2 个公共列。
表 1:学生
NAME | ID | DEPTID | YEAR | BATCH |
---|---|---|---|---|
abc | 123 | 987 | 2020 | 2 |
mno | 234 | 987 | 2020 | 2 |
abc | 123 | 765 | 2020 | 2 |
zyz | 124 | 765 | 2021 | 1 |
abc | 123 | 986 | 2020 | 2 |
表 2:映射
ID | DEPTID |
---|---|
123 | 765 |
234 | 987 |
123 | 986 |
现在,我正在尝试查找表 STUDENT 中不存在表 MAPPING 的所有详细信息。
例子
NAME | ID | DEPTID | YEAR | BATCH | MISSING |
---|---|---|---|---|---|
abc | 123 | 987 | 2020 | 2 | YES |
zyz | 124 | 765 | 2021 | 1 | YES |
我尝试使用 Minus,但如果列相同,它就可以工作。
任何帮助都会很棒。
问候,
阿拜
【问题讨论】:
【参考方案1】:看起来像一个普通的NOT EXISTS
。采样数据直到第 13 行;查询从第 14 行开始。
SQL> with
2 student (name, id, deptid, year, batch) as
3 (select 'abc', 123, 987, 2020, 2 from dual union all
4 select 'mno', 234, 987, 2020, 2 from dual union all
5 select 'abc', 123, 765, 2020, 2 from dual union all
6 select 'zyz', 124, 765, 2021, 1 from dual union all
7 select 'abc', 123, 986, 2020, 2 from dual
8 ),
9 mapping (id, deptid) as
10 (select 123, 765 from dual union all
11 select 234, 987 from dual union all
12 select 123, 986 from dual
13 )
14 select s.name, s.id, s.deptid, s.year, s.batch, 'YES' missing
15 from student s
16 where not exists (select null
17 from mapping m
18 where m.id = s.id
19 and m.deptid = s.deptid
20 )
21 order by s.name;
NAM ID DEPTID YEAR BATCH MIS
--- ---------- ---------- ---------- ---------- ---
abc 123 987 2020 2 YES
zyz 124 765 2021 1 YES
SQL>
【讨论】:
非常感谢 不客气。以上是关于找出oracle中具有不同列号的2个表之间的区别的主要内容,如果未能解决你的问题,请参考以下文章