You need to enable JavaScript to run this app. 基于get name from id场景传入mem_id查询收藏食谱信息的SQL编写咨询
优惠活动
大模型
产品
解决方案
定价
更多

基于get name from id场景传入mem_id查询收藏食谱信息的SQL编写咨询

关联查询实现:按用户ID获取全部收藏食谱详情

本次需求的核心关联桥梁是tbl_fav收藏表,表内同时存储用户主键mem_id和食谱主键rec_id的外键关联,无需回查用户表即可完成核心查询逻辑。

基础可用版本(适配现有表结构)

-- 将实际的mem_id参数替换到WHERE条件位置即可执行
SELECT r.*
FROM tbl_fav f
INNER JOIN tbl_recipe r
  ON f.rec_id = r.rec_id
WHERE f.mem_id = /* 传入的目标用户mem_id */;

该版本执行效果:

  • 匹配当前传入用户ID下的所有食谱收藏关联记录,返回食谱表全部核心字段,覆盖食谱名称、预处理时长、烹饪时长、食谱描述等要求的信息
  • 通过INNER JOIN天然过滤无效条目:如果收藏记录对应的食谱已经被物理删除,不会返回空的无效结果行

可选增强版本

如果需要校验传入的mem_id为数据库中真实存在的有效用户,降低无效参数的排查成本,可以补充关联用户表做存在性校验,查询写法调整为:

SELECT r.*, f.fav_id AS fav_record_id
FROM tbl_member m
INNER JOIN tbl_fav f
  ON m.mem_id = f.mem_id
INNER JOIN tbl_recipe r
  ON f.rec_id = r.rec_id
WHERE m.mem_id = /* 传入的目标用户mem_id */;

该版本的附加能力:同时返回用户每条收藏记录的主键ID,后续做取消收藏操作时可以直接定位对应条目,不需要再二次查询收藏记录ID。

实操注意点

  • 不要跳过收藏表直接关联用户表和食谱表:两张表没有直接的外键映射,硬写关联条件会生成笛卡尔积,返回的结果会完全错乱
  • 如果收藏表存在历史脏数据(比如同一用户重复收藏同一条食谱),可以在SELECT 后面加DISTINCT做结果去重,避免前端接收到重复的食谱条目
  • 后续如果食谱表加了软删除标记,记得在WHERE条件里加对应过滤,不要把已经下架的食谱返回给用户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 12:15:03