我有一张表示友谊的表格,如下所示
+--------+--------+
| 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
)
但重复让我烦恼。如何在没有冗余的情况下做同样的事情?
我知道答案很简单,但我不能指责它。我尝试使用别名但没有成功。谢谢!
答案 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)