Как получить данные из подзапроса, который имеет самостоятельное присоединение? - PullRequest
1 голос
/ 30 мая 2020

моя таблица:

friends(uid_1 int, uid_2 int)

Это мой запрос:

SELECT a.uid_1
     , a.uid_2 as a2
     , b.uid_1 as b1
     , b.uid_2
  from friend a 
  join friend b
    on a.uid_1 = b.uid_2;

Я хочу получить a2 и b1 из запроса для других целей

Итак, этот запрос сейчас:

Select a2,b1
from (SELECT a.uid_1,a.uid_2 as a2,b.uid_1 as b1,b.uid_2
      from friend a join
           friend b
           on a.uid_1=b.uid_2
     )

не работает. Как мне получить определенные данные из диапазона отображаемых данных?

Ответы [ 3 ]

1 голос
/ 30 мая 2020

Вам нужен псевдоним имени таблицы для подзапроса, например: Select ... FROM (subquery) T

, тогда вы можете ссылаться на содержимое подзапроса с полным именем

    Select T.a2, T.b1
    from (SELECT a.uid_1,a.uid_2 as a2, b.uid_1 as b1, b.uid_2 b2
          from friend a join
               friend b
               on a.uid_1=b.uid_2
         ) T 
1 голос
/ 30 мая 2020

Вам просто не хватает псевдонима

Select a2,b1
from (SELECT a.uid_1,a.uid_2 as a2,b.uid_1 as b1,b.uid_2
  from friend a join
       friend b
       on a.uid_1=b.uid_2
 ) as temp -- here it is
1 голос
/ 30 мая 2020

Номер 1, вам просто не хватает псевдонима для вашего подзапроса, как показано ниже -

Select a2,b1
from (
    SELECT a.uid_1,a.uid_2 as a2,b.uid_1 as b1,b.uid_2
    from friend a join
    friend b
    on a.uid_1=b.uid_2
) A -- added A as a Alias 

Но номер 2, не уверен, что вы пытаетесь сделать с JOIN в качестве вашего запроса с реализованным Условия JOIN просто эквивалентны приведенному ниже запросу -

SELECT * 
FROM friend 
WHERE uid_1 = uid_2
...