SQL:資料表交叉查詢 Inner/Outer Join
查詢左資料表(Left Table:Product)與右資料表(Right Table:Orders)之間 pid 相同的資料
select * from product as o INNER JOIN orders as p on o.pid=p.pid
(Inner Join) 只會傳回兩個資料表中滿足資料列聯結條件 (ON 之後) (Join Condition) 的資料列,其他不符合的資料列將不會顯示。
--------------------(LEFT OUTER JOIN)
(Outer Join) 會將兩個資料表中不符合聯結條件的資料一併顯示,
只是判斷以 LEFT 或 RIGHT為主 。
select * from product as o LEFT OUTER JOIN orders as p on o.pid=p.pid
除了滿足連結條件的資料列會顯示(如 INNER JOIN)外,在左邊(LEFT)資料表存在的資料列也會顯示在結果集(Result Set)中。右邊不符合的資料列將會顯示NULL。
--------------------(RIGHT OUTER JOIN)
select * from product as o RIGHT OUTER JOIN orders as p on o.pid=p.pid
除了滿足連結條件的資料列會顯示(如 INNER JOIN)外,在右邊(RIGHT)資料表存在的資料列也會顯示在結果集(Result Set)中。左邊不符合的資料列將會顯示NULL。
--------------------(FULL OUTER JOIN)
select * from product as o FULL OUTER JOIN orders as p on o.pid=p.pid
除了滿足連結條件的資料列會顯示(如 INNER JOIN)外,在左邊及右邊資料表其中一方存在的資料列也都會顯示在結果集(Result Set)中。任一邊不符合的資料列將會顯示NULL。
----------------------(CROSS JOIN)
CROSS JOIN (Cartesian product 笛卡兒乘積)
select * from product as o cross join orders as p
這是一項不需要條件判斷的JOIN,
會以左邊資料表每一資料項乘上右邊資料表所有的資料項。意即5*5=25的資料項結果