join キーワードの機能は、特定の条件に従って複数のテーブルを結合し、複数のテーブルからデータを取得できるようにすることです。
推奨コース: MySQL チュートリアル 。
#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
# #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 を入れた方が効率的であるように感じます。
on は最後のフィルタリングではありません。左結合は後でそれを追加し直す可能性があるため、最後のフィルターはどこにありますか?
外部結合 (左、右) を使用する場合のみ、on と where の間にこの違いがあります。内部結合を使用する場合は、 on の後には where があり、その間に他のステップがないため、これはどこで定式化されても同じになります。
以上がSQLのjoinとwhereの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。