SQL-скрипт для объединения с самим собой и изменения значения

#mysql #sql

Вопрос:

У меня есть такой столик

введите описание изображения здесь

Что я должен сделать, чтобы получить такой результат

введите описание изображения здесь

Я пытаюсь с этим, но я не могу получить значение других

 SELECT A.UserName AS UserName, B.UserName AS Parent
FROM test A, test B
WHERE A.UserName <> B.UserName
AND (B.ID = A.Parent)

 

Результаты

введите описание изображения здесь

Комментарии:

1. Для получения NULL вам нужно использовать OUTER SELF JOIN (например, LEFT ).

Ответ №1:

Всегда используйте explicit join , и вам нужно использовать left join :

 select t1.id,
       t1.UserName , 
       t2.UserName ParentUsername
from tablename t1
left join tablename t2
    ON t1.parent = t2.ID
 

Ответ №2:

вы можете использовать left outer join этот запрос, который отлично работает

 SELECT A.UserName AS UserName, B.UserName AS Parent
FROM test A left outer join test B on (B.ID = A.Parent);
 

это сработало для меня с базой данных MySQL.

Ответ №3:

Попробуйте выполнить инструкцию join:

 SELECT A.UserName UserName, 
       B.UserName Parent
  FROM test A
  JOIN test B
    ON A.parent = B.ID