onとwhereの違い

957 ワード

onとwhereの違い-私はおじさんではありません-ブログ園http://www.cnblogs.com/fuge/archive/2011/12/26/2342576.html データベースは、2つ以上のテーブルを接続してレコードを返すと、中間のテンポラリ・テーブルを生成し、ユーザーに返します.left jionを使用する場合、onとwhereの条件の違いは次のとおりです.
1、on条件は、テンポラリ・テーブルを生成する際に使用される条件であり、onの条件が真であるかどうかにかかわらず、左のテーブルのレコードが返されます.
2、where条件は、テンポラリテーブルが生成された後、テンポラリテーブルをフィルタリングする条件です.このときleft joinの意味はなくなり(左の表の記録に戻らなければならない)、条件が本当でなければすべてフィルタリングされます.

表1:tab 2 id size 1 10 2 20 3 30表2:tab 2 size name 10 AAA 20 BBB 20 CCC
SQL:1、select*form tab 1 left join tab 2 on(tab 1.size=tab 2.size)where tab 2.name='AAA'2、select*form tab 1 left join tab 2 on(tab 1.size=tab 2.size and tab 2.name='AAA')
最初のSQLのプロセス:
1、中間表on条件:tab 1.size=tab 2.size tab 1.id tab 1.size tab 2.size tab 2.size tab 2.name 1 10 AAA 2 20 20 BBB 2 20 20 CCC 3 30(null)(null)
||2、中間テーブルにwhere条件をフィルタリングする:tab 2.name='AAA'tab 1.id tab 1.size tab 2.size tab 2.name 1 10 AAA