以下问题是我们娘子军的骨干成员surry遇到的,大部分的描述来自她手,我稍加整理、记录,具体如下:
1.问题描述:A,B两张表,A表单独查询有4条数据,使用inner join 和B表关联后,结果集有6条数据。join on的条件为B的非主键字段。
2.解决方法:把where中一部分条件筛选加到join on条件,实现了类似于表联合主键关联确定唯一一条数据的作用
3.原因解析:SQL执行时先执行From之后再从生成结果集中过滤where条件。执行的顺序是from->where->group by->having ->select->union->orderby
surry还推荐了一篇好文章,关于SQL的理解的,由于比较长,放在下一篇博文里了,共勉。链接附上:http://blog.csdn.net/lanonola/article/details/51605235