INNER JOIN INNER JOIN は MySQL では等結合と呼ばれます。つまり、等結合条件を指定する必要があります。 CROSS と INNER JOIN は 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 サイトの他の関連記事を参照してください。