close

NATURAL JOIN 自動依據相同名稱的欄位來做聯集,方式與INNER JOIN相同,結果略為不同

使用一般JOIN
語句︰
SELECT *
FROM occupation AS occ
            JOIN
                    user_order AS uo
            ON
                    occ.user_id = uo.user_id

結果︰所有有對應上的欄位都會出現









使用NATURAL JOIN,資料會只會出現叉集後的結果,並且相同的欄位名稱只會出現一次
語句︰
SELECT *
FROM occupation AS occ
            NATURAL JOIN
            user_order AS uo;

結果︰自動關聯user_id欄位,並只出現叉集後結果









使用NATURAL JOIN並指定個別欄位,相同欄位名稱不會自動出現,但依然可以指定
語句︰
SELECT occ.id,
               occ.user_id,
               occ.occupation,
               occ.salary,
               uo.id,
               uo.user_id,
               uo.order_date,
               uo.order_status
FROM occupation AS occ
            NATURAL JOIN
            user_order AS uo

結果︰依照指定查出特定欄位








除了上方所述一般使用之外,NATURAL JOIN還可以加入LEFT or RIGHT來做左右關聯

使用NATRUAL LEFT JOIN
語句︰
SELECT *
FROM occupation AS occ
            NATURAL LEFT JOIN
            user_order AS uo;

結果︰以occupation為主關聯user_order,並將相同名稱的欄位併成一個











使用NATRUAL RIGHT JOIN
語句︰
SELECT *
FROM occupation AS occ
            NATURAL RIGHT JOIN
            user_order AS uo;

結果︰以user_order為主關聯occupation,並將相同名稱的欄位併成一個










總結︰如果確定兩個TABLE有相同名稱的欄位(最好只有一個相同欄位),並且確知其資料的關聯性,而你想要的資料結果是叉集,則可使用NATRUAL JOIN

 
















其它文章

arrow
arrow

    PG Levin Li 發表在 痞客邦 留言(0) 人氣()