ONUSINGNATURAL の各条件

結合条件 ONUSINGNATURAL を使用して、結合基準を指定できます。

  • ON 節はもっとも柔軟な結合条件です。 すべての結合基準を指定できる他、場合によっては非結合基準にも対応します。
  • USING 節と NATURAL 節は、join 列が同じ名前を持つ結合を指定するのに便利です。

クロス結合

ONUSINGNATURAL 条件をクロス結合で使用することはできません。

内部結合

内部結合の例を以下に示します。
  • ON join_condition
       SELECT * FROM cows_one INNER JOIN cows_two ON cows_one.cnumber =
    cows_two.cnumber;
    cnumber     | cbreed     | cnumber  | breeds
    ------------+------------+----------+---------
    2           | Guernsey   | 2        | Jersey
    3           | Angus      | 3        | Brown Swiss
    (2 rows)
    次の文はこれと同等です。
       SELECT * FROM cows_one, cows_two WHERE cows_one.cnumber =
    cows_two.cnumber;
  • 使用 join_column_list
       SELECT * FROM cows_one INNER JOIN cows_two USING (cnumber);
    cnumber      | cbreed     | breeds
    -------------+---------- -+--------------
    2            | Guernsey   | Jersey
    3            | Angus      | Brown Swiss
    (2 rows)
  • 自然
       SELECT * FROM cows_one NATURAL INNER JOIN cows_two;
    cnumber       | cbreed     | breeds
    --------------+------------+--------------
    2             | Guernsey   | Jersey
    3             | Angus      | Brown Swiss
    (2 rows)

左外部結合

左外部結合の例を以下に示します。
  • ON join_condition
       SELECT * FROM cows_one LEFT JOIN cows_two ON cows_one.cnumber = 
    cows_two.cnumber;
    cnumber   |  cbreed    |cnumber    | breeds
    ----------+------------+-----------+-----------
    1         | Holstein   |           |           
    2         | Guernsey   | 2         | Jersey    
    3         | Angus      | 3         | Brown Swiss
    (3 rows)
  • 使用 join_column_list
       SELECT * FROM cows_one LEFT JOIN cows_two USING (cnumber);
    cnumber    |  cbreed     | breeds              
    -----------+-------------+----------------------
    1          | Holstein    |                       
    2          | Guernsey    | Jersey                
    3          | Angus       | Brown Swiss           
    (3 rows)
    
  • 自然
       SELECT * FROM cows_one NATURAL LEFT JOIN cows_two;
    cnumber    |  cbreed     | breeds              
    -----------+-------------+----------------------
    1          | Holstein    |                      
    2          | Guernsey    | Jersey               
    3          | Angus       | Brown Swiss           
    (3 rows)

右外部結合

右外部結合の例を以下に示します。
  • ON join_condition
       SELECT * FROM cows_one RIGHT JOIN cows_two ON cows_one.cnumber = 
    cows_two.cnumber;
    cnumber    |  cbreed    | cnumber   | breeds     
    -----------+------------+-----------+-------------
    2          | Guernsey   | 2         | Jersey       
    3          | Angus      | 3         | Brown Swiss 
               |            | 4         | Ayrshire     
    (3 rows)
    
  • 使用 join_column_list
       SELECT * FROM cows_one RIGHT JOIN cows_two USING (cnumber);
    cnumber    |  cbreed     | breeds      
    -----------+-------------+---------------
    2          | Guernsey    | Jersey        
    3          | Angus       | Brown Swiss   
    4          |             | Ayrshire      
    (3 rows)
  • 自然
       SELECT * FROM cows_one NATURAL RIGHT JOIN cows_two;
    cnumber    | cbreed     | breeds      
    -----------+------------+---------------
    2          | Guernsey   | Jersey       
    3          | Angus      | Brown Swiss   
    4          |            | Ayrshire      
    (3 rows)

全外部結合

全外部結合の例を以下に示します。
  • ON join_condition
       SELECT * FROM cows_one FULL OUTER JOIN cows_two ON cows_one.cnumber 
    = cows_two.cnumber;
    cnumber   |  cbreed    | cnumber   | breeds     
    ----------+------------+-----------+-------------
    1         | Holstein   |           |              
    2         | Guernsey   | 2         | Jersey       
    3         | Angus      | 3         | Brown Swiss 
              |            | 4         | Ayrshire
    (4 rows)
  • 使用 join_column_list
       SELECT * FROM cows_one FULL OUTER JOIN cows_two USING (cnumber);
    cnumber   | cbreed     | breeds            
    ----------+------------+------------------
    1         | Holstein   |                  
    2         | Guernsey   | Jersey            
    3         | Angus      | Brown Swiss       
    4         |            | Ayrshire          
    (4 rows)
  • 自然
       SELECT * FROM cows_one NATURAL FULL OUTER JOIN cows_two;
    cnumber    |  cbreed    | breeds         
    -----------+------------+------------------
    1          | Holstein   |                 
    2          | Guernsey   | Jersey          
    3          | Angus      | Brown Swiss      
    4          |            | Ayrshire         
    (4 rows)