1. 程式人生 > >SQL SERVER LEFT JOIN, INNER JOIN, RIGHT JOIN

SQL SERVER LEFT JOIN, INNER JOIN, RIGHT JOIN

技術 reat 至少 value com upper 左右 div server

  • JOIN: 如果表中有至少一個匹配,則返回行
  • LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
  • RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
  • FULL JOIN: 只要其中一個表中存在匹配,就返回行
CREATE TABLE dbo.Student
(
 Sno int  null
,Name nvarchar(23) 
)
CREATE TABLE dbo.Score
(
 Sno int 
,Score INT
)
INSERT INTO dbo.Student(Sno,Name)VALUES(1,‘Jesse‘);
INSERT INTO dbo.Student(Sno,Name)VALUES(2,‘Jessca‘);
INSERT INTO dbo.Student(Sno,Name)VALUES(3,‘June‘);
INSERT INTO dbo.Student(Sno,Name)VALUES(4,‘Supper‘);

INSERT INTO dbo.Score(Sno,Score)VALUES (1,45)
INSERT INTO dbo.Score(Sno,Score)VALUES (1,56)
INSERT INTO dbo.Score(Sno,Score)VALUES (2,100)
INSERT INTO dbo.Score(Sno,Score)VALUES (3,25)  


 查看數據:

SELECT * FROM dbo.Student
SELECT * FROM dbo.Score

  技術分享

Left Join 會顯示出左邊的全部數據,右邊如果沒有對應的值,系統默認NULL

SELECT *
FROM dbo.Student a
LEFT JOIN dbo.Score b
ON a.Sno=b.Sno

  技術分享

INNER JOIN 顯示交集

SELECT *
FROM dbo.Student a
INNER JOIN dbo.Score b
ON a.Sno=b.Sno

  技術分享

right join 右表全部顯示,左表沒有,默認設置為NULL

SELECT *
FROM dbo.Student a
RIGHT JOIN dbo.Score b
ON a.Sno=b.Sno

  

技術分享

FULL JOIN 左右邊都顯示,如果對方沒有值得統一設置NULL

SELECT *
FROM dbo.Student a
FULL JOIN dbo.Score b
ON a.Sno=b.Sno

  技術分享

SQL SERVER LEFT JOIN, INNER JOIN, RIGHT JOIN