SELF JOIN独特的结果集问题 - MySQL

时间:2013-07-29 15:01:06

标签: mysql sql self-join

我有一张表格如下

ID | CID

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

下面是我使用的SQL查询,它是SELF JOIN。

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

但我想要的O / P是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   

我怎样才能完成它?

3 个答案:

答案 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 :(得分: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

答案 2 :(得分:1)

我认为这可能是你想要的:

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