0

我有一张如下表

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   

我怎样才能完成它?

4

3 回答 3

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
于 2013-07-29T15:15:34.750 回答
1

我想这可能是你想要的:

select ID
from tbl_a
where id in (3, 4) or cid in (3, 4);
于 2013-07-29T15:25:03.497 回答
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
于 2013-07-29T15:12:59.287 回答