在与MySQL相同的查询中使用相同的子查询2次

时间:2015-03-11 21:44:18

标签: mysql

我有一张表示友谊的表格,如下所示

+--------+--------+
| user_1 | user_2 |
+--------+--------+
| 1      | 5      |
| 2      | 67     |
| 3      | 23     |
| ...    | ...    |
+--------+--------+

我想创建一个程序来检索朋友的朋友(但直接的朋友不能包含在结果中)。我通过以下方式实现了这一目标: (假设我们想要用户5的朋友的朋友)

SELECT user_2
FROM friends
WHERE user_1 IN (
    SELECT user_2
    FROM friends
    WHERE user_1=5
) AND user_2 NOT IN (
    SELECT user_2
    FROM friends
    WHERE user_1=5
)

但重复让我烦恼。如何在没有冗余的情况下做同样的事情?

我知道答案很简单,但我不能指责它。我尝试使用别名但没有成功。谢谢!

1 个答案:

答案 0 :(得分:1)

类似的东西对我有用:

SELECT user_2
FROM friends,
(SELECT user_2 FROM friends WHERE user_1=5) USER2Alias
WHERE user_1 IN (USER2Alias.user_2) AND user_2 NOT IN (USER2Alias.user_2)