SQL查询返回每个用户及其朋友

时间:2018-06-07 04:43:33

标签: sql mysqli

假设您有一个def huge (prg): return list (prg (count = 16, limit = 7, points = 12)) print (timeit ('huge (dist2)', number = 1, globals = globals ())) # 68.06868170504458 print (len (huge (dist2))) # 17321844 表和一个users表。 friends表格包含以下列

friends

我希望能够从user_id, friend_id表中获取所有用户并迭代它们以获取他们的朋友而不进行另一次数据库调用...有没有办法做到这一点?

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

users

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

id, username

但我希望能够做到这一点

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

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

2 个答案:

答案 0 :(得分:1)

要以逗号分隔列表的形式获取每个用户的朋友,可以在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

答案 1 :(得分:0)

你有没有尝试过JOIN它可以完成这项工作

SELECT u.username,f.friend_id FROM users u LEFT JOIN friends f ON u.user_id = f.user_id

或者您执行以下操作

SELECT u.username,f.friend_id FROM users u,friends f WHERE u.user_id = f.user_id