You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将profile表与好友的好友(FOF)查询进行关联?

解决FOF查询关联profile表的问题

你的JOIN写法其实已经建立了关联,但问题出在SELECT语句只返回了sender字段,没有包含profile表的任何数据,所以看起来像是没关联成功。下面是修正后的两种写法:

写法一:基于原查询修改

保留你原来的子查询结构,补充profile字段的查询并明确表别名:

SELECT DISTINCT r.sender, p.*  -- 替换p.*为你需要的具体字段(如p.userId, p.username等)
FROM request r
LEFT JOIN profile p ON p.userId = r.sender
WHERE r.receiver IN (
    SELECT sender 
    FROM request 
    WHERE receiver = ${theuser} AND status = 1
) 
AND r.sender NOT IN (
    SELECT sender 
    FROM request 
    WHERE receiver = ${theuser} AND status = 1
) 
AND r.sender <> ${theuser};

写法二:用JOIN替代子查询(性能更优)

通过多表JOIN直接关联用户的好友和好友的好友,同时确保所有好友关系都是已确认状态(status=1):

SELECT DISTINCT fof.sender, p.*
FROM request user_friends
-- 关联用户的好友
JOIN request fof ON user_friends.sender = fof.receiver
-- 关联FOF的profile信息
LEFT JOIN profile p ON p.userId = fof.sender
WHERE user_friends.receiver = ${theuser}
  AND user_friends.status = 1
  AND fof.status = 1  -- 确保FOF的好友关系也是已确认的
  AND fof.sender NOT IN (
      SELECT sender 
      FROM request 
      WHERE receiver = ${theuser} AND status = 1
  )
  AND fof.sender <> ${theuser};

注意事项

  • 如果只需要存在profile记录的FOF,把LEFT JOIN改成INNER JOIN即可。
  • 避免用p.*,尽量指定具体需要的字段,减少数据传输量。

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:46:12