多表聯查
多表聯查分為三類:內連接(inner join )、左連接(left join)、右連接(right join )
內連接(inner join 、join )
SELECT * FROM 表A as a inner join 表B as b ON a.連接字段=b.連接字段
解析:inner join 和ON 是內連接的關鍵詞,內連接是取得表A和表B能通過連接字段關聯起來的數據。
連接字段可以有多個,用and或者or 關聯 如:ON a.連接字段1=b.連接字段1 and a.連接字段2=b.連接字段2 or a.連接字段3=b.連接字段3
PS: as 是給表A,表B取個別名的方便ON關鍵詞后面指定那張表的連接字段,也可以不用as,直接表A.連接字段,如:
SELECT * FROM 表A inner join 表B ON 表A.連接字段=表B.連接字段
示例:學生表student
課程表Course
select* from Student s inner join Course c ON s.Id=c.StudentId
通過student表的id和Course表的StudentId 取到了能關聯的張三李四王五的記錄、趙六關聯不上所以沒有記錄
左連接(left join)
SELECT * FROM 表A as a left join 表B as b ON a.連接字段=b.連接字段
解析:left join和ON 是左連接的關鍵詞,左連接是以左邊表A為主表,表B為子表,先查詢出表A中的數據,然后關聯表B如果關聯上了就將數據查詢出來,如果表B中沒有關聯上數據則對應字段為null。
示例:學生表student
課程表Course
select* from Student s left join Course c ON s.Id=c.StudentId
通過student表的id和Course表的StudentId 取到了能關聯的張三李四王五的記錄、趙六關聯不上所以Course表對應的記錄為null
右連接(right join)
SELECT * FROM 表A as a right join 表B as b ON a.連接字段=b.連接字段
解析:right join和ON 是右連接的關鍵詞,右連接是以右邊表B為主表,表A為子表,先查詢出表B中的數據,然后關聯表A如果關聯上了就將數據查詢出來,如果表A中沒有關聯上數據則對應字段為null。
示例:學生表student
課程表Course
select* from Student s right join Course c ON s.Id=c.StudentId
這里之所以數據和內連接(inner join )數據一致,是因為右邊表B所有的數據都能關聯到左邊,如果將student表放置在右邊(Course c right join Student s)則和左連接一致
三個表以上連接查詢
SELECT * FROM 表A as a right join 表B as b ON a.連接字段=b.連接字段 INNER JOIN 表C as c ON c.連接字段=a.連接字段
連接查詢如果待條件語句:
SELECT * FROM 表A as a right join 表B as b ON a.連接字段=b.連接字段 WHERE a.條件字段=條件