sql server幾種Join的區(qū)別測試方法
主要來介紹下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的區(qū)別。
Inner Join:篩選兩邊都有的記錄
Full Out Join:兩邊都篩選出來,匹配能匹配的,不能匹配的用NULL列出
Cross Join:列出兩邊所有組合,也稱為笛卡爾集 A×B
Left Join:以左邊的表為主表,列出主表所有記錄,匹配能匹配的,不能匹配的用 NULL列出
Right Join:以右邊的表為主表,列出主表所有記錄,匹配能匹配的,不匹配的用NULL列出
下面來看代碼:
創(chuàng)建測試表:
CREATETABLE CONSUMERS ( CONSUMER_ID INTNOTNULL, CONSUMER_NAME VARCHAR(10) NOTNULL ) CREATETABLE ORDERS ( CONSUMER_ID INTNOTNULL, ORDER_ID VARCHAR(10) NOTNULL)
編測試數(shù)據(jù)
INSERT CONSUMERS VALUES ( 1, 'AA') INSERT CONSUMERS values ( 2, 'BB') INSERT CONSUMERS values ( 3, 'CC') INSERT ORDERS VALUES ( 2, 'O100001') INSERT ORDERS VALUES ( 3, 'O100002') INSERT ORDERS VALUES ( 3, 'O100003') INSERT ORDERS VALUES ( 4, 'O100004')
測試
--Inner Join --篩選兩邊都有的記錄 SELECT * FROM ORDERS o INNER JOIN CONSUMERS c ON o.CONSUMER_ID = c.CONSUMER_ID --Full Out Join --兩邊都篩選出來,匹配能匹配的,不能匹配的用NULL列出 SELECT * FROM ORDERS o FULL OUTER JOIN CONSUMERS c ON o.CONSUMER_ID = c.CONSUMER_ID --Cross Join --列出兩邊所有組合,即笛卡爾集A×B SELECT * FROM ORDERS o CROSS JOIN CONSUMERS c --Left Join --以左邊的表為主表,列出主表所有記錄,匹配能匹配的,不能匹配的用NULL列出 SELECT * FROM CONSUMERS c left join ORDERS o on c .CONSUMER_ID = o .CONSUMER_ID --Right Join --以右邊的表為主表,列出主表所有記錄,匹配能匹配的,不能匹配的用NULL列出 SELECT * FROM CONSUMERS c RIGHT JOIN ORDERS o on c .CONSUMER_ID = o .CONSUMER_ID
ok了,具體的大家可以參考腳本之家以前發(fā)布的文章。
相關(guān)文章
查詢SQL Server Index上次Rebuild時間的方法
這篇文章主要介紹了查詢SQL Server Index上次Rebuild時間的方法,本文直接給出實現(xiàn)腳本代碼,需要的朋友可以參考下2015-07-07
Windows故障轉(zhuǎn)移群集 和 SQLServer AlwaysOn 配置搭建詳
這篇文章主要介紹了Windows故障轉(zhuǎn)移群集 和 SQLServer AlwaysOn 搭建教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
sql 存儲過程分頁代碼 支持億萬龐大數(shù)據(jù)量
sql 存儲過程分頁代碼 支持億萬龐大數(shù)據(jù)量,需要的朋友可以參考下。2011-09-09
刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)的幾個方法
刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)的幾個方法...2006-12-12

