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.LEFT[OUTER]JOIN产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
SELECT*FROMTableALEFTOUTERJOINTableBONTableA.name=TableB.name
3.RIGHT[OUTER]JOIN产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
SELECT*FROMTableARIGHTOUTERJOINTableBONTableA.name=TableB.name
图标如leftjoin类似。
4.FULL[OUTER]JOIN产生A和B的并集。对于没有匹配的记录,则会以null做为值。
SELECT*FROMTableAFULLOUTERJOINTableBONTableA.name=TableB.name
你可以通过isNULL将没有匹配的值找出来:
SELECT*FROMTableAFULLOUTERJOINTableBONTableA.name=TableB.name
WHERETableA.idISnullORTableB.idISnull