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

如何通过SQL查询获取当前用户及关注用户的发布内容

解决方案:查询自身及关注用户的发布内容

原SQL语句仅筛选了当前用户自己发布的内容,未关联关注用户的发布数据,以下是两种可行的修正方案:

方案一:使用IN子查询(逻辑直观)

通过子查询先获取当前用户所有关注对象的邮箱,再筛选出这些对象和当前用户自己发布的内容:

SELECT b.text
FROM tableB AS b
WHERE b.user = 'currentuser'
   OR b.user IN (
       -- 子查询:获取当前用户关注的所有用户邮箱
       SELECT following
       FROM tableC
       WHERE follower = 'currentuser'
   )
-- 建议添加排序,按发布时间倒序展示最新内容,需替换为实际时间字段名
ORDER BY b.publish_time DESC;

方案二:使用JOIN关联查询

通过关联tableB和tableC,直接匹配关注关系对应的发布内容:

-- 加DISTINCT避免用户关注自己时出现重复内容
SELECT DISTINCT b.text
FROM tableB AS b
LEFT JOIN tableC AS c 
    ON b.user = c.following
WHERE b.user = 'currentuser'
   OR c.follower = 'currentuser'
ORDER BY b.publish_time DESC;

扩展优化:显示作者信息

如果需要同时展示内容发布者的名字,可以关联tableA获取用户名称:

SELECT 
    b.text, 
    a.name AS author_name,
    b.publish_time
FROM tableB AS b
JOIN tableA AS a 
    ON b.user = a.email
WHERE b.user = 'currentuser'
   OR b.user IN (
       SELECT following
       FROM tableC
       WHERE follower = 'currentuser'
   )
ORDER BY b.publish_time DESC;

注意事项

  • 将'currentuser'替换为PHP中当前登录用户的邮箱变量(例如$_SESSION['user_email']),注意做好SQL防注入处理(建议使用预处理语句)
  • 如果tableB没有时间字段,可根据实际需求调整排序逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:05:17