logo

MySQLの左結合

MySQL の左結合は、複数のテーブルのレコードをクエリするために使用されます。この句は、FROM キーワードの直後の SELECT ステートメントで使用できる Inner Join 句に似ています。 Left Join 句を使用すると、2 番目 (右側) のテーブルで一致するレコードが見つからなかった場合でも、最初 (左側) のテーブルからすべてのレコードが返されます。右側のテーブルに一致するレコードが見つからない場合は、null を返します。

つまり、Left Join 句は、左側のテーブルのすべての行と右側のテーブルの一致したレコードを返すか、一致するレコードが見つからない場合は Null を返します。この結合は、 左外部結合 句。したがって、Outer は、Left Join で使用するオプションのキーワードです。

これは、左結合が左側のテーブルからすべてのレコードを返し、右側のテーブルから一致するレコードのみを返す次の視覚的表現で理解できます。

MySQLの左結合

MySQL の LEFT JOIN 構文

次の構文は、2 つ以上のテーブルを結合するための Left Join 句を説明しています。

 SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON Join_Condition; 

上記の構文では、 表1 は左側のテーブルであり、 表2 右側の表です。この句は、指定された内容に基づいて、table1 のすべてのレコードと、table2 の一致したレコードを返します。 結合条件

MySQL LEFT JOIN の例

Left Join 句または Left external Join 句の動作を理解するために、いくつかの例を示します。

2 つのテーブルを結合するための LEFT JOIN 句

ここでは、2 つのテーブルを作成します。 顧客の そして ' 命令」 これには次のデータが含まれます。

表: 顧客

MySQLの左結合

表: 注文

MySQLの左結合

両方のテーブルからレコードを選択するには、次のクエリを実行します。

Javaは文字列内の文字を置換します
 SELECT customers.customer_id, cust_name, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id; 

クエリが正常に実行されると、次の出力が得られます。

MySQLの左結合

USING 句を使用した MySQL LEFT JOIN

テーブル customer と order には同じ列名 (customer_id) が付いています。その場合、MySQL Left Join を USING 句とともに使用してレコードにアクセスすることもできます。次のステートメントは、USING キーワードを指定した Left Join 句を使用して、顧客 ID、顧客名、職業、価格、および日付を返します。

 SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id); 

上記のステートメントにより、次の出力が得られます。

MySQLの左結合

Group By 句を使用した MySQL LEFT JOIN

左結合は、GROUP BY 句と一緒に使用することもできます。次のステートメントは、Left Join 句と GROUP BY 句を使用して、顧客 ID、顧客名、資格、価格、および日付を返します。

 SELECT customers.customer_id, cust_name, qualification, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id GROUP BY price; 

上記のステートメントにより、次の出力が得られます。

MySQLの左結合

WHERE 句を使用した LEFT JOIN

WHERE 句は、 フィルター 表からの結果。次の例は、Left Join 句を使用してこれを示しています。

 SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price>2500; 

このステートメントにより、次の結果が得られます。

MySQLの左結合

MySQL LEFT JOIN 複数のテーブル

すでに ' という名前の 2 つのテーブルを作成しました。 顧客の そして ' 命令」 。もう 1 つテーブルを作成し、「」という名前を付けましょう。 連絡先」には次のデータが含まれます。

MySQLの左結合

次のステートメントを実行して、customers、orders、contacts の 3 つのテーブルを結合します。

 SELECT customers.customer_id, cust_name, order_id, price, cellphone FROM customers LEFT JOIN contacts ON customer_id = contact_id LEFT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY income; 

上記のクエリが正常に実行されると、次の出力が得られます。

マウスホイールが正しくスクロールしない
MySQLの左結合

LEFT JOIN 句を使用して一致しないレコードを取得する

LEFT JOIN 句は、別のテーブルから一致するデータ行を含まないテーブル内のレコードを取得する場合にも役立ちます。

これは、LEFT JOIN 句を使用して携帯電話番号を持たない顧客を検索する次の例で理解できます。

 SELECT customer_id, cust_name, cellphone, homephone FROM customers LEFT JOIN contacts ON customer_id = contact_id WHERE cellphone IS NULL ; 

上記のステートメントは次の出力を返します。

MySQLの左結合

MySQL LEFT JOIN の WHERE 句と ON 句の違い

LEFT 結合では、条件 WHERE と ON によって異なる結果が得られます。違いを理解するには、次のクエリを参照してください。

WHERE句

 SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price=2500; 

次のような出力が返されます。

MySQLの左結合

ON条項

 SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500; 

次の出力が得られます。

MySQLの左結合

注: Inner Join 句の WHERE 条件と ON 条件は、常に同等の結果を返します。