Mysql left join 和where连接查询总结

前几天在需求测试过程中发现一个问题。表里新增的数据在另一个列表查不出来了。只能显示到去年12月份的数据。sql里用了一个where关联查询看起来也对。那新数据为什么没显示出来呢。后来查了一下关联表发现关联表的数据到12月份就没有了。把那个where关联查询执行了一下果然只能查出到12月份的数据。难道left join查询和where关联查不一样。试了一下果然是这样现把区别总结如下:
where 关联查询其实是精确匹配只有两个表里的数据都满足关联条件才能被查出来
Left join是会显示出左表全部的数据及右表符合条件的数据
where关联查询实际等价于inner join 只有符合条件的数据才会显示

示列如下:

1.SELECT su.user_id, su.username,sr.user_id,sr.role_id from sys_user as su LEFT JOIN sys_user_role as sr on su.user_id=sr.user_id;
2.SELECT su.user_id, su.username,sr.user_id,sr.role_id from sys_user as su ,sys_user_role as sr where su.user_id=sr.user_id;
3.SELECT su.user_id, su.username,sr.user_id,sr.role_id from sys_user as su inner JOIN sys_user_role as sr on su.user_id=sr.user_id;

三行sql结果依次对应下边三张图片
Mysql left join 和where连接查询总结_第1张图片
Mysql left join 和where连接查询总结_第2张图片Mysql left join 和where连接查询总结_第3张图片

你可能感兴趣的:(数据库,mysql)