sql查询朋友的朋友

前端之家收集整理的这篇文章主要介绍了sql查询朋友的朋友前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我知道如何在1个查询中获得mutal朋友,但现在来了困难的部分,我怎样才能得到所有朋友朋友,这些朋友在1个查询中并不是我的朋友,返回用户ID?我已经看了一些关于这个的帖子,但我无法按照我的意愿让它们工作.

我的关系是两种方式,因此如果1和2是朋友,则关系表中存在两行.

我的表格及相关信息:

  1. table_users
  2. user_id
  1. table_relations
  2. rel_id
  3. from_id
  4. to_id

我现在已经用了2天了,我似乎无法让它发挥作用.

最好的问候,
亚历山大

最佳答案
假设你的id为1

  1. /*Your friends' friends*/
  2. SELECT r2.from_id FROM
  3. table_relations r
  4. INNER JOIN table_relations r2
  5. ON r.from_id = r2.to_id
  6. WHERE r.to_id = 1
  7. EXCEPT /*EXCEPT is Standard but MINUS in Oracle*/
  8. /*Your friends*/
  9. SELECT from_id
  10. FROM table_relations
  11. WHERE to_id = 1

或者使用OUTER JOIN

  1. SELECT DISTINCT r2.from_id
  2. FROM
  3. table_relations r
  4. INNER JOIN table_relations r2
  5. ON r.from_id = r2.to_id
  6. LEFT OUTER JOIN table_relations r3 ON r3.to_id = r2.from_id AND r3.from_id=1
  7. WHERE r.to_id = 1 AND r3.from_id is null

猜你在找的MySQL相关文章