首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从下面的表中获得唯一集的最佳SQL查询

从下面的表中获得唯一集的最佳SQL查询
EN

Stack Overflow用户
提问于 2015-05-07 13:24:31
回答 2查看 84关注 0票数 2

我有一个下面的桌子

代码语言:javascript
运行
复制
Select X,Y from T
X | Y
------
1 | 2     
1 | 3      
2 | 1     
3 | 5     
3 | 1  

列X和Y包含Strings,例如,我给出了数字。

我需要这个表的输出如下所示

代码语言:javascript
运行
复制
1,2

1,3

3,5

这张桌子上唯一的一套。在第1行(1,2)和第3行(2,1)中,我只需要一组,因为(1,2)=(2,1)。同样,(1,3)=(3,1)。所以这个表中的唯一集合是(1,2) (1,3)和(3,5)。

我在SQL下面尝试过,请告诉我是否有更好的方法,因为我不确定我是否可以在ROWID中使用'>‘或'<’

代码语言:javascript
运行
复制
SELECT X||','||Y FROM T t1
WHERE NOT EXISTS (SELECT 1 FROM T t2
WHERE t1.X=t2.Y AND t1.Y=t2.X and t1.ROWID>t2.ROWID)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-07 13:28:26

代码语言:javascript
运行
复制
select distinct least(x,y), greatest(x,y)
from the_table;

least()greatest()将值按顺序排列,以便将1,2和2,1作为1,2返回。

票数 2
EN

Stack Overflow用户

发布于 2015-05-07 13:29:54

DISTINCT为您提供了不同的行,所以您所需要做的就是排序您的对子,首先是较小的,然后是较大的。你用最少和最好的方法来做这件事。

代码语言:javascript
运行
复制
select distinct least(x,y) || ',' || greatest(x,y)
from t;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30102423

复制
相关文章

相似问题

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