mysql查询问题,主表4条数据,附表2条数据,但是我要关联查询 出来

问题抛出

主表 有 4条数据,但是附表只有2条。

可是我的detail查询,肯定是一直关联附表的。

这时候我写法是:

mysql查询问题,主表4条数据,附表2条数据,但是我要关联查询  出来

生成的sql为:

mysql查询问题,主表4条数据,附表2条数据,但是我要关联查询  出来

SELECT
    t_cycle.*,
    t_cycle_group.cycle_group_name,
    t_cycle_display.is_display 
FROM
    `t_cycle`
    LEFT JOIN t_cycle_group ON t_cycle_group.cycle_group_id = t_cycle.cycle_group_id 

    LEFT JOIN t_cycle_display ON t_cycle_display.cycle_id = t_cycle.cycle_id 
WHERE
    `t_cycle`.`deleted_at` IS NULL 
    AND ( ( t_cycle_group.project_id = t_cycle.project_id ) 
    AND ( ( t_cycle_display.project_plan_id = 3 ) AND ( t_cycle.cycle_id = 18 ) ) 
    LIMIT 1

执行后,查询不到不在附表对应的 2条记录

mysql查询问题,主表4条数据,附表2条数据,但是我要关联查询  出来

mysql 原生解决

把附表的条件,放入到join 的 on 后面。
在join时候,进行条件过滤。就会保持主表的记录了。

mysql查询问题,主表4条数据,附表2条数据,但是我要关联查询  出来

映射到go中解决

调整代码位置
mysql查询问题,主表4条数据,附表2条数据,但是我要关联查询  出来

生成sql 如下

mysql查询问题,主表4条数据,附表2条数据,但是我要关联查询  出来

SELECT
    t_cycle.*,
    t_cycle_group.cycle_group_name,
    t_cycle_display.is_display 
FROM
    `t_cycle`
    LEFT JOIN t_cycle_group ON t_cycle_group.cycle_group_id = t_cycle.cycle_group_id 
    AND t_cycle_group.project_id = t_cycle.project_id
    LEFT JOIN t_cycle_display ON t_cycle_display.cycle_id = t_cycle.cycle_id 
WHERE
    `t_cycle`.`deleted_at` IS NULL 
    AND ( ( t_cycle_display.project_plan_id = 3 ) AND ( t_cycle.cycle_id = 18 ) ) 
    LIMIT 1

记录mysql的小技巧了,感谢老高,我亲爱的同事

本作品采用《CC 协议》,转载必须注明作者和本文链接
感谢关注 上海PHP自学中心-免费编程视频教学|
wangchunbo
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
智能开发工程师 @ 有临医药
文章
206
粉丝
310
喜欢
461
收藏
845
排名:112
访问:7.9 万
私信
所有博文