繁体   English   中英

SQL:检索不同列的不同

[英]SQL: Retrieve Distinct for different columns

我有以下情况:

在 SQL 表中,我有以下列:

|----------------------------------------|-------------------------------------|
|      Col 1                             |     Col 2                           |
|----------------------------------------|-------------------------------------|
| 4BAEFCAD-0B61-E911-B26B-005056872FC1   | 855757A6-0D61-E911-B26B-005056872FC1|
|----------------------------------------|-------------------------------------|
| 855757A6-0D61-E911-B26B-005056872FC1   | 4BAEFCAD-0B61-E911-B26B-005056872FC1|
|----------------------------------------|-------------------------------------| 
| D2ADDEF8-A3A8-E911-B272-005056872FC1   | CED9DFD0-35A9-E911-B272-005056872FC1|
|----------------------------------------|-------------------------------------|

前两行有点引用相同的记录,因为它们包含相同的第 1 行和第 2 行的值,但交换了。

是否有一种只检索这两个列之一的 sql 方式? 所以最后我收到以下结果:

|----------------------------------------|-------------------------------------|
|      Col 1                             |     Col 2                           |
|----------------------------------------|-------------------------------------|
| 4BAEFCAD-0B61-E911-B26B-005056872FC1   | 855757A6-0D61-E911-B26B-005056872FC1|
|----------------------------------------|-------------------------------------| 
| D2ADDEF8-A3A8-E911-B272-005056872FC1   | CED9DFD0-35A9-E911-B272-005056872FC1|
|----------------------------------------|-------------------------------------|

谢谢

一个简单的方法是:

select col1, col2
from t
where col1 < col2
union all
select col1, col2
from t
where col2 > col1 and
      not exists (select 1 from t t2 where t2.col2 = t.col1 and t2.col1 = t.col2);

这具有保留原始行的优点。 如果您不关心订购:

select distinct (case when col1 < col2 then col1 else col2 end) as col1,
       (case when col1 < col2 then col2 else col1 end) as col2
from t;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM