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

当post_share不为空时获取对应原帖子字段值的SQL实现问询

解决方案:关联原帖子数据的查询改造

你需要的是在现有查询基础上,当post_share字段不为NULL时,拉取它指向的原帖子相关信息对吧?其实只需要额外左连接一次posts表(用来关联原帖子),再按需关联原帖子对应的用户信息就可以实现。

改造后的完整查询示例

假设你需要原帖子的文本、发布时间,以及原帖子作者的名称和头像,查询可以写成这样:

SELECT
  -- 当前帖子发布者的信息
  c.nome AS author_name,
  p.foto AS author_photo,
  p.user AS author_id,
  -- 当前帖子(或分享帖)的基础信息
  p.id AS post_id,
  p.data AS post_date,
  p.text AS post_text,
  -- 原帖子的相关信息(仅当post_share不为NULL时返回有效值)
  original_post.text AS original_post_text,
  original_post.data AS original_post_date,
  original_user.nome AS original_author_name,
  original_user.foto AS original_author_photo,
  -- 保留你原查询中的profil表字段(请补全原关联条件)
  pp.foto
FROM posts p
-- 关联当前帖子的发布用户
JOIN users c ON p.user = c.id
-- 左连接原帖子表,关联条件为post_share匹配原帖子ID
LEFT JOIN posts original_post ON p.post_share = original_post.id
-- 左连接原帖子的发布用户
LEFT JOIN users original_user ON original_post.user = original_user.id
-- 保留你原查询中的左连接逻辑(示例补全为常见的用户关联,可替换为你的实际条件)
LEFT JOIN profil pp ON c.id = pp.user_id;

关键细节说明

  • 选择LEFT JOIN而非INNER JOIN:这样即使post_share为NULL(非分享帖),当前帖子的基础信息依然能正常返回,原帖子相关字段会显示为NULL,完全贴合业务逻辑。
  • 给原帖子字段加别名:比如original_post_text,避免和当前帖子的同名字段重名导致混淆或查询错误。
  • 按需调整字段:如果只需要原帖子的部分字段(比如原帖子ID、发布IP),直接在SELECT子句中添加对应字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:06:52