m0_60983761 2022-03-31 10:18 采纳率: 89.5%
浏览 58
已结题

sql连表查询显示字段问题

两张表, 表1和表2联合查询 想要一条语句返回表一的所有字段 并加上表二的一部分字段 表一的id=表二的课程id,表二存了一个userid,有一个登陆者, 希望可以查到表1的所有数据 并且表二的字段一起返回 如果这个表二没有这条数据 那么这个字段为空就行,我用left join不行 因为一旦表二没有数据 用userid=表二的userid 那么表一的数据就都查不出来了 ,请问有什么办法

  • 写回答

4条回答 默认 最新

  • 嘉祐-小萝卜算子 2022-03-31 10:33
    关注

    select
    *
    from

    tbl1 t1
    left join
    tbl2 t2
    on t1.id = t2.course_id
    and t2.user_id = 登录用户的id

    我猜测你应该是把过滤条件 userId 写到where上了,
    where 会先join 然后过滤, 这样的话等价于inner join
    会把左侧保留表的数据也过滤掉
    所以 正确的答案应该是 条件在on上面, 如果supply null 表有对应的数据
    则关联上, 如果没有 ,则supply null

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 请采纳用户回复 3月31日
  • 创建了问题 3月31日