データベースを学習していると、よくonとwhereが出てきますが、今日はonとwhereの違いについてお話します。
データベースが 2 つ以上のテーブルを接続してレコードを返す場合、中間の一時テーブルが生成され、この一時テーブルがユーザーに返されます。
左結合を使用する場合、on 条件と where 条件の違いは次のとおりです:
1. on 条件は、一時テーブルを生成するときに使用される条件です。オンは本当です。
2. where条件は、一時テーブル生成後に一時テーブルをフィルタリングするための条件です。この時点では、左結合の意味はありません (左のテーブルのレコードが返される必要があります)。条件が true でない場合は、すべてが除外されます。
2 つのテーブルがあるとします。
テーブル 1: tab1
id size1 102 203 30
テーブル 2: tab2
size name10 AAA20 BBB20 CCC
2 つの SQL:
1、select * from tab1 left join tab2 on tab1.size = tab2.size where tab2.name='AAA'2、 select * from tab1 left join tab2 on tab1.size = tab2.size and tab2.name='AAA'
最初の SQL プロセス:
1. 中間テーブル
の条件:
tab1.size = tab2.size tab1.id tab1.size tab2.size tab2.name1 10 10 AAA2 20 20 BBB2 20 20 CCC3 30 (null) (null)
2. 中間テーブル
の条件:
tab2.name='AAA' tab1.id tab1.size tab2.size tab2.name1 10 10 AAA
2 番目の SQL プロセス:
1. 中間テーブル
の条件:
tab1.size = tab2。 size および tab2.name='AAA' (条件が true でない場合、左側のテーブルのレコードも返されます)
tab1.id tab1.size tab2.size tab2.name1 10 10 AAA2 20 (null) (null )3 30 (null) (null)
実際、上記の結果の主な理由は、左結合、右結合、完全結合の特殊性です。
on の条件が true であるかどうかに関係なく、左側または右側のテーブルのレコードは、左側と右側の特性の和集合を持ちます。
内部の jion にはこのような特殊性がないため、条件は on と where に配置され、返される結果セットは同じになります。
この記事では、where と on の違いについて説明します。関連する知識については、php 中国語 Web サイトを参照してください。
関連プロモーションプレス:
PHPはjsonを受け取り、受け取ったデータをデータベースに挿入します
以上がSQL の on 条件と where 条件の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。