ホームページ  >  記事  >  データベース  >  SQLのjoinとwhereの違い

SQLのjoinとwhereの違い

(*-*)浩
(*-*)浩オリジナル
2019-05-10 16:58:387298ブラウズ

join キーワードの機能は、特定の条件に従って複数のテーブルを結合し、複数のテーブルからデータを取得できるようにすることです。

推奨コース: MySQL チュートリアル

SQLのjoinとwhereの違い

#on 条件と where 条件の後に join を続けることができます。ここでは主に 2 つの違いについて説明します

テスト用に 2 つの単純なテーブルを作成し、データを追加します。以下に示すように、1 つのテーブルには id_name という名前が付けられ、もう 1 つのテーブルには id_age という名前が付けられます。

# #まず条件を追加せずに結果を見てください - t2.age ='22'

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id

Get

# #1. ここでは左結合を例に挙げます。まず where を実行し、条件を追加します - when t2.age ='22'

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id where t2.age ='22'

結果は次のとおりです

where 条件を取得できるのは次のとおりです。左結合操作の完了後に実行される条件フィルタリング

2. 条件を追加するために実行すると - t2.age ='22'

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id and t2.age ='22'

結果は次のとおりです

on 条件は、左結合の前に条件をフィルタリングし、2 つのテーブルを結合することで取得できます。

ここでは、左結合は、たとえば内部の場合に使用されます。 join はその性質上、2 つの条件で得られる結果は同じですが、内部処理は異なります。

on は where よりも先に動作します。まず on 条件に従って進みます。マルチテーブルの場合結合操作では、一時テーブルを生成してから、where でフィルタリングします。

どちらとどこを配置するのがより効率的ですか?

内部結合の場合は、どこに配置して、どこに配置しますか?同じ結果が生成されますが、どちらがより効率的で高速であるかはわかりません? 外部結合 (左または右) がある場合は、 on が最初に有効になり、一部のデータがフィルタリングされているため、違いが生じます。

まとめると、where の前に実行されるため、on を入れた方が効率的であるように感じます。

最初のデカルト積、次にフィルタリング、if結合が内部であり、下に進みます。結合が左結合の場合、on でフィルタリングされた左側のメイン テーブルにデータを追加し直します。次に、どこでフィルタリングを実行します。


on は最後のフィルタリングではありません。左結合は後でそれを追加し直す可能性があるため、最後のフィルターはどこにありますか?

外部結合 (左、右) を使用する場合のみ、on と where の間にこの違いがあります。内部結合を使用する場合は、 on の後には where があり、その間に他のステップがないため、これはどこで定式化されても同じになります。

以上がSQLのjoinとwhereの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。