ホームページ  >  記事  >  バックエンド開発  >  SQL の on 条件と where 条件の違い

SQL の on 条件と where 条件の違い

jacklove
jackloveオリジナル
2018-05-22 10:55:232311ブラウズ

データベースを学習していると、よく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がCSSコードを圧縮する方法について

PHPはjsonを受け取り、受け取ったデータをデータベースに挿入します

PHP MySqlページングの例

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

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