mysql - 在 MySQL 的同一个查询中使用同一个子查询 2 次

标签 mysql

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

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

我想创建一个程序来检索 friend 的 friend (但直接 friend 不能包含在结果中)。我通过执行以下操作实现了这一点: (假设我们想要用户 5 的 friend 的 friend )

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
)

但是重复让我很烦。我怎样才能在没有冗余的情况下做同样的事情?

我知道答案很简单,但我无法确定。我尝试使用别名但没有成功。谢谢!

最佳答案

类似的东西对我有用:

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)

关于mysql - 在 MySQL 的同一个查询中使用同一个子查询 2 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997987/

相关文章:

mysql : Previous Row data if data on another row is equal to data on current row

php - 请检查更新查询不起作用。我是 Mysql 新手,请

mysql - 将 Spring Boot 应用程序连接到 Google Cloud 中的 MySQL 数据库

php - 如何向数据库表中的多个收件人发送电子邮件?

mysql - 我如何在 mysql 数据库中存储奖金债券号码

mysql - Django - 如何从我想要从中获取对象的表中没有外键的表中获取值?

php - mysql JOIN 让我打败了

MySQL,根据值选择列名

mysql - 使用连接、分组依据和聚合函数的 SQL 选择查询

mysql - 如何获得商品总数?