sql - SQL查询返回每个用户和他们的朋友
问题描述
假设您有一张users
桌子和一张friends
桌子。朋友表具有以下列
user_id, friend_id
我希望能够从users
表中获取所有用户并遍历他们以获取他们的朋友而无需进行另一个数据库调用...有没有办法做到这一点?
如果我有一个users
包含以下列的表格
id, username
我可以得到一个用户并做一些事情
$result->username ... or $result->id
但我希望能够做到这一点
$result->friends
有没有办法以某种方式friends
使用 sql 查询添加这个“假”属性?
解决方案
要将每个用户的朋友作为逗号分隔列表获取,您可以在 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
推荐阅读
- c# - 如何从更大的列表创建子列表以在 MVC 中循环
- listview - Flutter:水平列表视图的最小高度
- c - 使用指针算术求和数字
- php - 从 Woocommerce 的订单页面完成付款后更新订单元数据
- java - iText7 (PdfSweep):编辑文本时出现 NullPointerException
- eclipse-plugin - 如何像上次一样刷新 TreeViewer 并展开节点?
- foreach - Makefile:根据来自foreach的参数将不同的变量值传递给相同的目标
- javascript - 花式框中的箭头和键
- sharepoint - 通过 API 获得权限
- javascript - 如何在同一函数内选择一个使用 innerHTML 启动的类