SELF JOIN Уникальная проблема Resultset - MySQL

У меня есть таблица как ниже

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 - это идентификаторы строк или CID, которые используются. Если я объясню больше, когда идентификатор 1 CID 3, когда идентификатор 3 CID равен 4, когда идентификатор 6 CID равен 3. Когда я получу уникальные идентификаторы и CID, которые используются в таблице, будет 1,3,4,6,

Окончательный правильный O/P Требуется ниже.

ID  

1   
3   
4   
6   

Как я могу это сделать?

3 ответа

Решение

Не уверен, что ты пытаешься сделать. Я думаю, что вы говорите, что вы хотите идентификатор строк, которые имеют ненулевой CID или на которые ссылается столбец CID. (?) Попробуй это:

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

Попробуй это

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

Я думаю, что это может быть то, что вы хотите:

select ID
from tbl_a
where id in (3, 4) or cid in (3, 4);
Другие вопросы по тегам