最佳 SQL 查询以从 table 下面获取唯一集
Best SQL query to get unique sets from below table
我下面有一个table
Select X,Y from T
X | Y
------
1 | 2
1 | 3
2 | 1
3 | 5
3 | 1
X 和 Y 列包含字符串,我给出数字只是为了举例。
我需要这个table的输出如下
1,2
1,3
3,5
i,e,来自 table 的唯一集。在第 1 行 (1,2) 和第 3 行 (2,1) 中,我只需要一组,因为 (1,2)=(2,1) 在我的集合中。同样(1,3)=(3,1)。
因此,此 table 中的唯一集合是 (1,2) (1,3) 和 (3,5)。
我尝试了以下 SQL,如果有更好的方法请告诉我,因为我不确定我是否可以将“>”或“<”与 ROWID
一起使用
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)
select distinct least(x,y), greatest(x,y)
from the_table;
least()
和 greatest()
将值按顺序排列,以便 1,2 和 2,1 返回为 1,2。 distinct
然后删除重复项
DISTINCT 为您提供不同的行,因此您需要做的就是对您的行进行排序,首先是较小的,然后是较大的。您使用 LEAST 和 GREATEST 执行此操作。
select distinct least(x,y) || ',' || greatest(x,y)
from t;
我下面有一个table
Select X,Y from T
X | Y
------
1 | 2
1 | 3
2 | 1
3 | 5
3 | 1
X 和 Y 列包含字符串,我给出数字只是为了举例。
我需要这个table的输出如下
1,2
1,3
3,5
i,e,来自 table 的唯一集。在第 1 行 (1,2) 和第 3 行 (2,1) 中,我只需要一组,因为 (1,2)=(2,1) 在我的集合中。同样(1,3)=(3,1)。 因此,此 table 中的唯一集合是 (1,2) (1,3) 和 (3,5)。
我尝试了以下 SQL,如果有更好的方法请告诉我,因为我不确定我是否可以将“>”或“<”与 ROWID
一起使用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)
select distinct least(x,y), greatest(x,y)
from the_table;
least()
和 greatest()
将值按顺序排列,以便 1,2 和 2,1 返回为 1,2。 distinct
然后删除重复项
DISTINCT 为您提供不同的行,因此您需要做的就是对您的行进行排序,首先是较小的,然后是较大的。您使用 LEAST 和 GREATEST 执行此操作。
select distinct least(x,y) || ',' || greatest(x,y)
from t;