我有一张表格如下
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
我怎样才能完成它?
答案 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);