首页 > 解决方案 > SQL查询返回每个用户和他们的朋友

问题描述

假设您有一张users桌子和一张friends桌子。朋友表具有以下列

user_id, friend_id

我希望能够从users表中获取所有用户并遍历他们以获取他们的朋友而无需进行另一个数据库调用...有没有办法做到这一点?

如果我有一个users包含以下列的表格

id, username

我可以得到一个用户并做一些事情

$result->username ... or $result->id

但我希望能够做到这一点

$result->friends

有没有办法以某种方式friends使用 sql 查询添加这个“假”属性?

标签: sqlmysqli

解决方案


要将每个用户的朋友作为逗号分隔列表获取,您可以在 MySql 中使用 GROUP_CONCAT 函数。我在这里有一个左连接来获取users表中的所有行,如果您只想要有朋友的用户,请使用普通连接。

SELECT u.id, u.username, GROUP_CONCAT(f.friend_id)
FROM users u
LEFT JOIN friends f ON u.id = f.user_id
GROUP BY u.id, u.username

推荐阅读