SQL | AB、BA去重问题(含多种大小情况)
需求1:表中同时存在数据AB和BA,但我们只想保留其中一种情况(AB和BA视为同一种情况),怎么做?
源数据表t1:
id | num_1 | num_2 |
---|---|---|
1 | 88 | 99 |
2 | 99 | 88 |
3 | 30 | 24 |
4 | 24 | 30 |
用大于号或者小于号搞定:
select num_1, num_2
from t1
where num_1 > num_2
或
select num_1, num_2
from t1
where num_1 < num_2
需求2:如果是以下源数据,需求不变,怎么做?
id | num_1 | num_2 |
---|---|---|
1 | 30 | 24 |
2 | 24 | 30 |
3 | 958 | 497 |
4 | 88 | 99 |
这种情况同时存在大于、小于、大于小于的情况,如果直接用需求1的解决方式,肯定会丢数据。
解决思路:union all复制一遍数据再比较即可。
with tmp as(
select num_1, num_2
from t1
union all