两张表, 表1和表2联合查询 想要一条语句返回表一的所有字段 并加上表二的一部分字段 表一的id=表二的课程id,表二存了一个userid,有一个登陆者, 希望可以查到表1的所有数据 并且表二的字段一起返回 如果这个表二没有这条数据 那么这个字段为空就行,我用left join不行 因为一旦表二没有数据 用userid=表二的userid 那么表一的数据就都查不出来了 ,请问有什么办法
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
你好,根据你的问题我大致猜测没用left join是没问题的
是不是你把userid=表二的userid 这个条件拼接在了where语句中
如果是这样的话,这个left join是不会生效的,直接内转为了inner join,所以你会获取不到
希望可以帮到你,如果不是这个问题,可以继续回复我,顺便贴出表结构,一块解决
用left join啊 你判断的有问题
select * from table a
inner join table1 b on a.id=b.id
select * from table a
full join table1 b on a.id=b.id