本文目录
SQL中的innerjoin、outerjoin和crossjoin有什么区别
对于SQL中innerjoin、outerjoin和crossjoin的区别,如果你使用join连表,缺陷的情况下是innerjoin,另外,开发中使用的leftjoin和rightjoin属于outerjoin,另外outerjoin还包括fulljoin.下面我通过图标让大家认识它们的区别。
现有两张表,TableA是左边的表。TableB是右边的表。其各有四条记录,其中有两条记录name是相同的:
1.INNERJOIN产生的结果是AB的交集
SELECT*FROMTableAINNERJOINTableBONTableA.name=TableB.name
2.LEFTJOIN产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
SELECT*FROMTableALEFTOUTERJOINTableBONTableA.name=TableB.name
3.RIGHTJOIN产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
SELECT*FROMTableARIGHTOUTERJOINTableBONTableA.name=TableB.name
图标如leftjoin类似。
4.FULLJOIN产生A和B的并集。对于没有匹配的记录,则会以null做为值。
SELECT*FROMTableAFULLOUTERJOINTableBONTableA.name=TableB.name
你可以通过isNULL将没有匹配的值找出来:
SELECT*FROMTableAFULLOUTERJOINTableBONTableA.name=TableB.name
WHERETableA.idISnullORTableB.idISnull
mysql中inner join和outer join有什么区别
joins主要是合并两个表中的数据组成一个临时的结果集,on后面指定执行连接所使用的的条件。inner join返回两个表基于连接条件实际匹配的行,即两个表交集。outer join返回两个表的并集结果,即匹配条件不满足的两个表的记录也将返回。
下面结合实例讲解,有如下两个表:
sql: select * from A a inner join B b on a.ID = b.ID; 或者 select * from A a, B b where a.ID = b.ID;
查询结果如下: