2017-08-16 71 views
2

我有表像下面如何获得两列的独特组合?

member follower 
A   B 
B   C 
C   D 
E   A 
B   A 
B   E 
D   E 

在该上述数据A - B,B - 阿具有相同的关系..我需要唯一的行或者A - B或B - 甲

输出应该是这样的低于

member follower 
A   B 
B   C 
C   D 
E   A 
B   E 
D   E 

我已经解决了,但我只是想知道我的逻辑是否合适。

+1

然后添加您的查询。 –

+0

在此处显示您的查询以查看您的评估逻辑。 – gaurav

回答

1

这是你需要的所有查询:

SELECT DISTINCT LEAST(member,follower) member_1 
      , GREATEST(member,follower) member_2 
      FROM my_table; 

剩下的就是噪音。

0

一种可能的方式是这样的:

SELECT greatest(t.member,t.follower) as member1, 
     least(t.member,t.follower) as member2 
FROM YourTable t 
GROUP BY 
     greatest(t.member,t.follower) , 
     least(t.member,t.follower) 
+0

非常感谢你...... –

+0

这个group by是为了不同的值,没有group by - 会有重复的(我也可以使用不同的,但它有什么关系?)@Strawberry。虽然我同意删除第一个。 – sagi

+0

这个论坛里充斥着数千个错误地使用GROUP BY子句的帖子。它从上面提供的看起来无害的陈述开始,以文盲大屠杀结束。所以,'有什么关系?'你告诉我。 – Strawberry

0

试着这么做:

SELECT member, follower 
FROM yourtable 
WHERE (SELECT COUNT(*) FROM yourtable WHERE CONCAT(member, follower) = REVERSE(CONCAT(member, follower))) <= 1