2016-06-11 57 views
1

如何从包含特定元素的两列中选择具有唯一对的MySql表中的所有行。在列A和B的表中,我需要A或B中包含x的所有行,但具有唯一的(A,B)配对,顺序无关紧要。SQL表的唯一对

对于e.g,

----------------- 
+ id | A | B 
+ 1 | cat | dog 
+ 2 | cat | rat 
+ 3 | deer | cat 
+ 4 | rat | cat 
+ 5 | dog | cat 

在独特的对(A,B)为(猫,狗),(猫,大鼠),和(鹿,猫)。所以我想行(1或5),(2或4)和3

我已经试过

select * from table GROUP BY A, B HAVING (A='cat' OR B='cat') 

,但是这给了我与两个(猫,狗)行(狗,猫)。我只需要其中的一个。

如何应用mySql查询以便只获得具有不同对的行?

+0

1或5?哪一个 ? – Strawberry

+0

最后一个ID最好。输出应该按顺序排列5,4,3 –

回答

0

地方和没有因为你没有aggreation功能

select a, b 
from table 
where a = 'x' or b = 'x' 
and (a,b) not in (select b,a from table); 

使用不同的基于您提供以下

select id, b, a 
from prova 
where a = 'cat' or b = 'cat' 
and (a,b) not in (select b,a from prova); 
order by id desc 
查询样品重复行

select distinct a, b 
from table 
where a = 'x' or b = 'x' 
and (a,b) not in (select b,a from table); 

使用

return

3 deer cat 
2 cat rat 
1 cat dog 

看起来完全是你正在寻找的结果

+0

我在A和B的同一行中没有'x'。 例如,第1行 - 列A中的x,列b中的y 第2行 - 列A中的y,列b中的x。我只需要获取其中的一行。 –

+0

显示一个示例,所以我可以理解...用数据示例更新您的问题 – scaisEdge

+0

我编辑了我的第一条评论。请看一下。 –