2013-07-29 78 views
0

我有一個表,如下自聯接獨特的結果集的問題 - MySQL的

ID | CID 

1 | 3 
2 | 0 
3 | 4 
4 | 0 
5 | 0 
6 | 3 

下面是SQL查詢我使用的是自聯接。

SELECT t1.ID 
FROM `tbl_a` AS t1 JOIN `tbl_a` AS t2 
ON t1.ID = t2.CID 

這給了我如下的O/P。

ID | CID 

3 | 4 
4 | 0 

但我想作爲輸入/輸出的是1,3,4,6

O/P的邏輯是正在使用的行ID或CID。如果我解釋更多當ID是1 CID 3時,當ID是3時CID是4,當ID是6時CID是3.當我得到唯一ID時表中使用的CID將是1,3,4,6

最終正確的O/P要求如下。

ID 

1 
3 
4 
6 

我該怎麼做?

+1

不應該t1.Id = t2.CID?另外,您的預期產出是{1,3}和{4,6}?請格式化,以便更清楚 –

+0

您只從t1中選擇列。嘗試'選擇*從t1加入B t2 t2 t1.ID = t2.ID;' –

+0

正如目前所述,您的示例輸出是錯誤的,您的問題沒有意義。 –

回答

1

不知道你在做什麼。我想你說的是你需要具有非零CID或由CID列引用的行的ID。 (?)試試這個:

SELECT ID FROM tbl_a AS t1 WHERE CID <> 0 OR EXISTS(SELECT * FROM tbl_a AS t2 WHERE t2.CID = t1.ID) ORDER BY ID 
1

試試這個

SELECT t2.ID 
FROM `tbl_a` AS t1 JOIN `tbl_a` AS t2 
ON t1.ID = t2.CID 
OR t2.ID = t1.CID 
GROUP BY t2.ID 
1

我想這可能是你想要什麼:

select ID 
from tbl_a 
where id in (3, 4) or cid in (3, 4);