2013-03-25 26 views
1

去除重複行我有列編號和名稱如何從聯接查詢在MySQL

表中

id  name 
1  Chinmoy 
2  Amit 
3  Bhagi 

我想引起我的表3的記錄本

name1  name2 
Amit  Bhagi 
Amit  Chinmoy 
Bhagi  chinmoy 

我試過併成功達到此目的

name1 name2 
Amit  Bhagi 
Amit  Chinmoy 
Bhagi Amit 
Bhagi Chinmoy 
Chinmoy Amit 
Chinmoy Bhagi 

使用此查詢

select tbl1.name,tbl2.name from test tbl1 
join test tbl1 on tbl1.name != tbl2.name 
order by tbl1.name,tbl2.name; 

現在我沒有得到如何做。

我必須消除已經以相反順序出現的記錄。

請幫助

在此先感謝

回答

4

基本上,你可以通過a.Name < b.Name

SELECT a.Name Name1, b.Name Name2 
FROM TableName a, TableName b 
WHERE a.Name < b.Name 
ORDER BY Name1, Name2 

輸出

╔═══════╦═════════╗ 
║ NAME1 ║ NAME2 ║ 
╠═══════╬═════════╣ 
║ Amit ║ Bhagi ║ 
║ Amit ║ Chinmoy ║ 
║ Bhagi ║ Chinmoy ║ 
╚═══════╩═════════╝ 
+0

是它的工作正常。 可以請你向我解釋查詢a.Name user1926138 2013-03-25 14:03:04

+0

很高興聽到.. – 2013-03-25 14:04:05

2

試試這個:

select tbl1.name as n1, tbl2.name as n2 from test tbl1 
join test tbl2 
on tbl1.name < tbl2.name 
order by tbl1.name, tbl2.name; 

說明

你可以添加一個條件tbl1.name < tbl2.name消除重複值。這樣您就不需要您已有的連接條件(tbl1.name != tbl2.name)。因爲當一個< b,a絕對不等於b,並且它會對你的名字進行排序,所以如果Amit < Bhagi是真的,反過來就不是真的,你也不會得到Bhagi - Amit。

+0

@tombom好點來自這兩個表的產品篩選的結果!我將更新 – jurgenreza 2013-03-25 13:59:33

+0

@ user1926138以您的示例給出的答案滿足要求。 +1 – fancyPants 2013-03-25 14:02:49

+0

@ user1926138它會給你完全相同的結果。嘗試一下。 – jurgenreza 2013-03-25 14:04:08