1, tableA JOIN tableB ON …
对于tableA与tableB满足ON条件的抓出。
过程模拟:对于tableA的每一行记录,遍历tableB的每行记录,若tableA与tableB的当前记录都满足ON条件,那么将tableA与tableB的当前记录取出,遍历完之后,若有LEFT,JOIN之类,则在取出的结果表中再加上没有满足条件的tableA外行即可。
即:LEFT JOIN 与 JOIN的区别在于:在对ON条件执行过滤后,是否再增加外行。
2,理解
1)
tableA JOIN tableB ON 1=1 :对于tableA与tableB的每一条记录,都满足1=1故相当于求tableA与tableB的笛卡儿积。
tableA LEFT JOIN tableB ON 1=1: 对于tableA与tableB的每一条记录,都满足1=1,抓取出。然后将不满足条件的tableA的行取出加上,但tableA所有记录都满足条件,故增加的外行为0 即此时:LEFT JOIN = JOIN
2) tableA JOIN tableB ON tableA.id = 1 :将tableA ID为1的与tableB所有记录连接。
tableA LEFT JOIN tableB ON tableA.id = 1 :将tableA ID为1的与tableB所有记录连接,然后再将tableA ID不为1的加上。
3) on 后的条件为>=或<=时,可用来求解阶梯问题。
【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。