2016-06-11 59 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

我編輯了我的第一條評論。請看一下。 –