LEFT OUTER JOIN 就是LEFT JOIN,LEFT OUTER JOIN只是个人书写习惯。
join等同于inner join等同于where,写Inner 和不写Inner 的话,没有区别。
因为执行时数据通常会把它当成Inner Join 执行 。
WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)
WHERE和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。
Cross Join笛卡尔乘积
N 和M 的结果是N*M
内连接(innner join,或称等值连接):返回两张表中匹配的记录
外连接包括:
左连接(left join):返回两张表匹配的记录,以及左表中多余的记录
右连接(right join):返回两张表匹配的记录,以及右表中多余的记录
全连接(full join):返回两张表匹配的记录,以及左右两表中各自多余的记录
通過中間表説明
biz_email_sent table1
biz_email table2
biz_email_sent_address 中間表
LEFT JOIN 是 JOIN 左邊的記錄(biz_email_sent id=52)全部查出,比如52 的記錄全部查出。
即使中間表se.sa_email_id 在 table2中找不到,比如為空,或者另有其它值,都會查出來。
SELECT
*
FROM
biz_email_sent s
LEFT JOIN biz_email_sent_address se ON s.es_id = se.sa_send_id
LEFT JOIN biz_email e ON e.be_email_address = se.sa_email_id
WHERE
s.es_id = 52