sql之left join�right join�inner join的区�
left join(å·¦è�”æŽ? 返回包括左表ä¸?š„æ‰?有è?录和å�³è¡¨ä¸?�”ç»“å—æ®µç›¸ç‰çš„记录
right join(å�³è�”æŽ? 返回包括å�³è¡¨ä¸?š„æ‰?有è?录和左表ä¸?�”ç»“å—æ®µç›¸ç‰çš„记录
inner join(ç‰å?¼è¿žæŽ? å�?¿”回两ä¸?¡¨ä¸?�”ç»“å—æ®µç›¸ç‰çš„è¡?
举例如下�
--------------------------------------------
表A记录如下�
aID�����aNum
1�����a20050111
2�����a20050112
3�����a20050113
4�����a20050114
5�����a20050115
表B记录如下:
bID�����bName
1�����2006032401
2�����2006032402
3�����2006032403
4�����2006032404
8�����2006032408
--------------------------------------------
1.left join
sqlè¯?�¥å¦‚下:
select * from A
left join B
on A.aID = B.bID
结果如下:
aID�����aNum�����bID�����bName
1�����a20050111����1�����2006032401
2�����a20050112����2�����2006032402
3�����a20050113����3�����2006032403
4�����a20050114����4�����2006032404
5�����a20050115����NULL�����NULL
(所影å“�çš„è?数为 5 行)
结果说明:
left joinæ˜?»¥A表的记录为基ç¡?çš?Aå�?»¥çœ‹æˆ�左表,Bå�?»¥çœ‹æˆ�å�³è¡¨,left joinæ˜?»¥å·¦è¡¨ä¸ºå‡†çš?
æ�¢å�¥è¯�è?,左表(A)çš„è?录将会全部表示出æ�?而å�³è¡?B)å�?¼šæ˜¾ç¤ºç¬¦å�ˆæ�œç´¢æ�¡ä»¶çš„è?å½?例å�ä¸?¸º: A.aID = B.bID).
B表è?录ä¸�足的地方å�‡ä¸ºNULL.
--------------------------------------------
2.right join
sqlè¯?�¥å¦‚下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID�����aNum�����bID�����bName
1�����a20050111����1�����2006032401
2�����a20050112����2�����2006032402
3�����a20050113����3�����2006032403
4�����a20050114����4�����2006032404
NULL�����NULL�����8�����2006032408
(所影å“�çš„è?数为 5 行)
结果说明:
仔细观察ä¸?ä¸?就会å�‘现,å’Œleft join的结果刚好相å�?è¿™æ?æ˜?»¥å�³è¡¨(B)为基ç¡?çš?A表ä¸�足的地方用NULLå¡?…….
--------------------------------------------
3.inner join
sqlè¯?�¥å¦‚下:
select * from A
innerjoin B
on A.aID = B.bID
结果如下:
aID�����aNum�����bID�����bName
1�����a20050111����1�����2006032401
2�����a20050112����2�����2006032402
3�����a20050113����3�����2006032403
4�����a20050114����4�����2006032404
结果说明:
很明æ˜?这里å�?˜¾ç¤ºå‡ºäº?A.aID = B.bIDçš„è?å½?è¿™è?明inner joinå¹¶ä¸�以è°�为基ç¡?,它å�ªæ˜¾ç¤ºç¬¦å�ˆæ�¡ä»¶çš„è?å½?
--------------------------------------------
æ³?
LEFT JOINæ“�作用于在任何的 FROM å�å�¥ä¸?¼Œç»„å�ˆæ�¥æº�表的记录。使ç”?LEFT JOIN è¿�ç®—æ�¥åˆ›å»ºä¸€ä¸?·¦è¾¹å?部è�”接ã?‚左边å?部è�”接将包å�«äº†ä»Žç¬?¸€ä¸?¼ˆå·¦è¾¹ï¼‰å¼€å§‹çš„两个表ä¸çš„全部è?录,å�³ä½¿åœ¨ç?二个(å�³è¾¹ï¼‰è¡¨ä¸å¹¶æ²¡æœ‰ç›¸ç¬¦å?¼çš„记录ã€?
è¯?³•:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
说明:table1, table2å�‚数用于指定è¦�将记录组å�ˆçš„表的å��ç§°ã??
field1, field2å�‚数指定è¢?�”æŽ¥çš„å—æ?çš„å��ç§°ã?‚ä¸”è¿™äº›å—æ?必须有相å�Œçš„æ•°æ�®ç±»åž‹å�ŠåŒ…å�?›¸å�Œç±»åž‹çš„æ•°æ�®ï¼Œä½†å®ƒä»¬ä¸�需è¦�有相å�Œçš„å��ç§°ã??
compopr�数指定关系比较�算符:"="�"<"�">"�"<="�">=" �"<>"�
如果在INNER JOINæ“�作ä¸??è�”接包å�«Memo æ•°æ�®ç±»åž‹æˆ?OLE Object æ•°æ�®ç±»åž‹æ•°æ�®çš„å—æ®µï¼Œå°†ä¼šå�‘生错è?.