ホームページ > データベース > mysql チュートリアル > mysqlの複数テーブルの結合クエリ

mysqlの複数テーブルの結合クエリ

(*-*)浩
リリース: 2020-09-15 16:24:04
オリジナル
24551 人が閲覧しました

INNER JOIN INNER JOIN は MySQL では等結合と呼ばれます。つまり、等結合条件を指定する必要があります。 CROSS と INNER JOIN は MySQL で一緒に分割されます。

mysqlの複数テーブルの結合クエリ

複数のテーブル接続タイプ

1. MySQL では、デカルト積 (クロス結合) を CROSS JOIN にすることも、CROSS を省略することもできます。 、JOIN、または「,」を使用します。例:

SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2
ログイン後にコピー

返される結果は、接続されている 2 つのデータ テーブルの積であるため、通常、WHERE、ON、または USING 条件がある場合には使用することはお勧めできません。なぜなら、データテーブルの項目が多すぎると、非常に遅くなるからです。通常は LEFT [OUTER] JOIN または RIGHT [OUTER] JOIN

を使用します 2. INNER JOIN INNER JOIN は MySQL では等結合と呼ばれます、つまり等結合条件を指定する必要があります MySQL における CROSS と INNER JOIN は分割されています一緒に。 join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition]

3. MySQL の外部結合は、左外部結合と右外部結合に分割されます。つまり、結合条件を満たす結果を返すことに加えて、結果が左側のテーブル (左結合) または右側のテーブル (右結合) の結合条件を満たさない場合は、それに応じて NULL が使用されます。

例:

user表:
id | name
———
1 | libk
2 | zyfon
3 | daodao
user_action表:
user_id | action
—————
1 | jump
1 | kick
1 | jump
2 | run
4 | swim
ログイン後にコピー

sql ステートメント:

select id, name, action from user as uleft join user_action a on u.id = a.user_id
ログイン後にコピー

結果:

id | name   | action
——————————–
1  | libk  | jump     结果1      
1  | libk  | kick     结果2        
1  | libk  | jump     结果3       
2  | zyfon  | run      结果4          
3  | daodao | null     结果5         
---------------------
ログイン後にコピー

分析:

user_action のエラー user_id=4、action=swim のレコードがありますが、結果には表示されません。

ユーザー テーブル内の id=3、name=daodao のユーザーには、対応するレコードがありませんuser_action に記録されますが、表示されます。結果セットでは

現在は左結合であるため、すべての作業は左に基づいています。

結果 1、2、3、および 4 は次のとおりです。左側のテーブルと右側のテーブルの両方にあるすべてのレコード、5 は左側のテーブルにのみ存在し、右側のテーブルには存在しないレコードです。

動作原理:

左側のテーブルからレコードを読み取り、右側のテーブルで一致するすべてのレコードを選択します。 レコード (n) が接続されて n 個のレコード (結果 1 と結果 3 などの重複行を含む) が形成されます。 on 条件に一致する右の場合、接続されたフィールドはすべて null になります。その後、次のフィールドの読み取りを続けます。

拡張子:

右側のテーブルに一致するものが存在しない場合、左側のテーブルにあるすべてのレコードを検索するために null が表示されるというルールを使用できますが、正しいテーブルにありません。判断に注意してください。その列は null ではないと宣言する必要があります。

例:

select id, name, action from user as uleft join user_action a on u.id = a.user_idwhere a.user_id is NULL
ログイン後にコピー

(注: 1. 列の値が null の場合は、=NULL

の代わりに is null を使用する必要があります。 2. ここでは、.user_id 列を使用します。 NOT NULL として宣言する必要があります。)

上記の sql:

id | name | action
————————–
3 | daodao | NULL
ログイン後にコピー
の結果

以上がmysqlの複数テーブルの結合クエリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート