![](/img/trans.png)
[英]how to select unique records from a table based on a column which has distinct values in another column
[英]Select distinct values based on multiple column from table
我在虚拟桌子下面
select * from (
select 'A' as col1, 'B' as col2 from dual
union
select 'B' as col1, 'A' as col2 from dual
union
select 'A' as col1, 'C' as col2 from dual
union
select 'C' as col1, 'A' as col2 from dual
union
select 'A' as col1, 'D' as col2 from dual
)a
这将给出如下输出
col1 col2
A B
A C
A D
B A
C A
我想从该表中找到不同的值,如下所示
col1 col2
A B
A C
A D
第一行可以是AB或BA,第二行可以是AC或CA
可能吗?? 我们得到了下面的上述问题的解决方案
select distinct least(col1, col2), greatest(col1, col2)
from the_table;
但是如果有超过2列,那么我将无法工作
让我们假设以下情况
输入项
col1 col2 col3
A B E
A C E
A D E
B A F
C A E
输出量
col1 col2 col3
A B E
A D E
B A F
C A E
那么可能的解决方案是什么?
这是一种方法:
select col1, col2
from t
where col1 <= col2
union all
select col1, col2
from t
where col1 > col2 and
not exists (select 1 from t t2 where t2.col1 = t.col2 and t2.col2 = t.col1);
以下内容适用于Oracle和Postgres:
select distinct least(col1, col2), greatest(col1, col2)
from the_table;
在线示例: http : //rextester.com/BZXC69735
select DISTINCT * from (
select 'A' as col1, 'B' as col2 from dual
union
select 'B' as col1, 'A' as col2 from dual
union
select 'A' as col1, 'C' as col2 from dual
union
select 'C' as col1, 'A' as col2 from dual
union
select 'A' as col1, 'D' as col2 from dual
)a
select col1, col2 from t where col1 <= col2
union
select col2, col1 from t where col1 > col2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.