首页 > 解决方案 > 如何从具有自连接的子查询中获取数据?

问题描述

我的桌子:

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
     )

不起作用。如何从一系列显示的数据中获取某些数据?

标签: mysqlsqldatabasesubquery

解决方案


第 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

推荐阅读