sql server幾種Join的差別測試辦法。本站提示廣大學習愛好者:(sql server幾種Join的差別測試辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是sql server幾種Join的差別測試辦法正文
重要來引見下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的差別。
Inner Join:挑選雙方都有的記載
Full Out Join:雙方都挑選出來,婚配能婚配的,不克不及婚配的用NULL列出
Cross Join:列出雙方一切組合,也稱為笛卡爾集 A×B
Left Join:以右邊的表為主表,列出主表一切記載,婚配能婚配的,不克不及婚配的用 NULL列出
Right Join:以左邊的表為主表,列出主表一切記載,婚配能婚配的,不婚配的用NULL列出
上面來看代碼:
創立測試表:
CREATETABLE CONSUMERS ( CONSUMER_ID INTNOTNULL, CONSUMER_NAME VARCHAR(10) NOTNULL ) CREATETABLE ORDERS ( CONSUMER_ID INTNOTNULL, ORDER_ID VARCHAR(10) NOTNULL)
編測試數據
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了,詳細的年夜家可以參考之前宣布的文章。