MySQL の左結合は、複数のテーブルのレコードをクエリするために使用されます。この句は、FROM キーワードの直後の SELECT ステートメントで使用できる Inner Join 句に似ています。 Left Join 句を使用すると、2 番目 (右側) のテーブルで一致するレコードが見つからなかった場合でも、最初 (左側) のテーブルからすべてのレコードが返されます。右側のテーブルに一致するレコードが見つからない場合は、null を返します。
つまり、Left Join 句は、左側のテーブルのすべての行と右側のテーブルの一致したレコードを返すか、一致するレコードが見つからない場合は Null を返します。この結合は、 左外部結合 句。したがって、Outer は、Left Join で使用するオプションのキーワードです。
これは、左結合が左側のテーブルからすべてのレコードを返し、右側のテーブルから一致するレコードのみを返す次の視覚的表現で理解できます。
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 つのテーブルを作成します。 顧客の そして ' 命令」 これには次のデータが含まれます。
表: 顧客
表: 注文
両方のテーブルからレコードを選択するには、次のクエリを実行します。
Javaは文字列内の文字を置換します
SELECT customers.customer_id, cust_name, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
クエリが正常に実行されると、次の出力が得られます。
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);
上記のステートメントにより、次の出力が得られます。
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;
上記のステートメントにより、次の出力が得られます。
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 LEFT JOIN 複数のテーブル
すでに ' という名前の 2 つのテーブルを作成しました。 顧客の そして ' 命令」 。もう 1 つテーブルを作成し、「」という名前を付けましょう。 連絡先」には次のデータが含まれます。
次のステートメントを実行して、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;
上記のクエリが正常に実行されると、次の出力が得られます。
マウスホイールが正しくスクロールしない
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 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;
次のような出力が返されます。
ON条項
SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500;
次の出力が得られます。