Mysql,双重连接两次使用同一张表,但间接

标签 mysql join self-join

有很多关于同表join的问题,但是我找不到与我的问题相关的东西

我有两个表:

user (id, name)
friends (from, to)

我有以下查询。它应该检索所有用户和他们的 friend :

SELECT user.id, user.name, f.to, friend.id, friend.name
FROM user

LEFT JOIN friends f ON user.id = f.from
LEFT JOIN user friend ON  user.id = f.to
LIMIT 0, 200

它返回这样的东西:

id name from to id   name
1  bob  1    3  NULL NULL
1  bob  1    4  NULL NULL
2  toto 2    7  NULL NULL

from 和 two 是正确的,但是第二个 join 好像不行。您知道第二次加入有什么问题吗?

最佳答案

试试这个:

SELECT user.id, user.name, f.to, friend.id, friend.name
FROM user
LEFT JOIN friends f ON user.id = f.from
LEFT JOIN user friend ON friend.id = f.to
LIMIT 0, 200

请注意,我在连接条件中将 user 替换为 friend

关于Mysql,双重连接两次使用同一张表,但间接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13009813/

相关文章:

php - php中的注销脚本问题

php - 在 codeIgniter 中插入多个 SQL 语句

mysql - 根据条件执行多个左连接并获取非空列值

jpa - 无法理解EclipseLink警告

mysql - 我需要一个循环还是他们在这里更简单

mysql - 从一张表查询与两张表的关系(MySQL)

mysql - 使用唯一列执行 SQL 批量插入/更新时保持数据完整性和一致性

MYSQL - 连接 3 个表按月分组,包括空月

mysql - SQL 查询 - 在小于或等于日期加入

c# - LINQ 使用扩展方法语法连接具有不同记录的多列