首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从SQL中的两列中找到唯一对?

如何从SQL中的两列中找到唯一对?
EN

Stack Overflow用户
提问于 2018-02-23 06:25:54
回答 4查看 4.4K关注 0票数 3

我有一个表“Dummy”,其中包含列"col1“和”col2“。

如何从(col1,col2)中找到唯一对。例如,在上表中,我如何仅获得(a,b)或(b,a)作为我的输出,而不是同时获得(a,b)和(b,a)。

代码语言:javascript
运行
复制
select
    distinct
    col1
    col2
from
    dummy
where
    dummy.col1 < dummy.col2
group by
    col1,
    col2;

上面的查询是错误的,因为它遗漏了对(d,c)。

EN

Stack Overflow用户

发布于 2018-02-23 06:28:10

使用leastgreatest

代码语言:javascript
运行
复制
select least(col1,col2),greatest(col1,col2) 
from tbl
group by least(col1,col2),greatest(col1,col2) 

但是如果只有一对(x,y)或(y,x)存在,这可能会返回表中没有的行。

要避免这种情况,请使用

代码语言:javascript
运行
复制
select least(col1,col2) as col1,greatest(col1,col2) as col2
from tbl
group by least(col1,col2),greatest(col1,col2) 
having count(*)>1
union all
select col1,col2 
from tbl
where (least(col1,col2),greatest(col1,col2)) in (select least(col1,col2) as col1,greatest(col1,col2) as col2
                                                 from tbl
                                                 group by least(col1,col2),greatest(col1,col2) 
                                                 having count(*)=1
                                                )    
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48938232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档