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);