sql - Oracle 比较列表
问题描述
我有 2 张桌子AAA
和BBB
.Oralce DB
Table AAA
'aaa'
'aaa'
'aaa'
'bbb'
'bbb'
Table BBB
'aaa'
'aaa'
'bbb'
'bbb'
'bbb'
我需要通过以下操作与这些表进行比较:
AAA - BBB
结果:' aaa
'
BBB - AAA
结果:' bbb
'
BBB intersect AAA
result:
'aaa'
'aaa'
'bbb'
'bbb'
标准操作minus, union, intersect
对我没有帮助
解决方案
使用row_number()
分析函数,例如:
with AAA as
(
select 'aaa' as str from dual union all
select 'aaa' from dual union all
select 'aaa' from dual union all
select 'bbb' from dual union all
select 'bbb' from dual
), BBB as
(
select 'aaa' as str from dual union all
select 'aaa' from dual union all
select 'bbb' from dual union all
select 'bbb' from dual union all
select 'bbb' from dual
), t as
(
select row_number() over (order by 1) rn, str from BBB
minus
select row_number() over (order by 1) rn, str from AAA
)
select str
from t
STR
---
bbb
然后颠倒表格的顺序。
如果直接应用减号,那么它会删除所有出现的返回行,即使它们是重复的。因为这两个集合的字符串类型值是相同的。
推荐阅读
- c# - 如何将 CTRL+S 发送到 MS Word?
- java - 在 Weblogic 12c 上构建 EAR 和部署
- python - 如果一个数字与另一个数字太相似,我如何设置一个循环以便它生成一个新的随机数?
- python - 在python中添加字符串(作为base 12数字的表示)和整数/其他字符串
- amazon-s3 - Rails ActiveStorage 附加到现有 S3 文件
- javascript - 为什么在 jquery 中所有的文本字段都可以连接到 Javascript 文件但只有一个被遗漏了?
- javascript - SAPUI5 addEventListener 在加载时调用函数而不是在声明的事件上
- javascript - 如何绑定事件处理函数,使其能够成功设置 React 状态?
- mysql - 在mysql中组合不同数据库中的两个数据库表
- r - 使用“详细信息”HTML 标签切换块输出