この記事では、MySQL での結合クエリとセット操作について説明します。お役に立てば幸いです。 結合クエリ 結合クエリとは、2 つ以上のテーブル間で一致するクエリを指し、一般に水平操作と呼ばれます。結果には、これらのテーブルのすべての列が含まれます。MySQL には、クロス結合、内部結合、外部結合という 3 つの結合操作があります。 [関連する推奨事項: mysql ビデオ チュートリアル ] クロス結合は CROSS JOIN と呼ばれ、2 つのテーブルに対してデカルト積を実行し、2 つのテーブルを返します。すべての列の構成。たとえば、左側のテーブルに n 個のデータ、右側のテーブルに m 個のデータがある場合、最終結果は n*m ですが、これを次のように接続することもできます。自分自身で実行すると、最終結果は次のステートメントのように n*n 項目になります。 select * from orders as a cross join orders as b; +---------+--------+---------+--------+ | orderId | userId | orderId | userId | +---------+--------+---------+--------+ | 10007 | 2 | 10001 | 1 | | 10006 | 4 | 10001 | 1 | ..... | 10002 | 1 | 10007 | 2 | | 10001 | 1 | 10007 | 2 | +---------+--------+---------+--------+ 49 rows in set (0.01 sec)ordersテーブルのデータは7個なので、最終的には49個のデータが生成されます。 mysql> select * from orders as a ,orders as b;結果は同じですが、記述方法が異なります。上記の記述方法は、1989 年に米国規格協会によって SQL 用に標準化され、ANSI SQL 89 標準と呼ばれ、最初の記述方法は92年の規制。 クロス結合は、次のステートメントのような繰り返しデータを迅速に生成する場合に便利です。 insert orders select a.orderId,a.userId from orders as a ,orders as b limit 10;以下は内部結合で、2 つの部分に分かれています。最初にデカルト積が生成され、その後、後続の ON フィルタリング条件に従ってフィルタリングされ、同じ値を生成します。 2 つのテーブルのレコード。 ON の後の等号演算子 (=) に加えて、より大きい (>)、より小さいなどの他の演算子も使用できます。より大きい ( ) 演算子と等しくない ( ) 演算子を使用して結合条件を形成します。 最後のものは OUTER JOIN で、いくつかのフィルタリング条件に従ってテーブル間のデータを照合できます。INNER JOIN とは異なり、OUTER JOIN によって追加された予約テーブルには一致するデータが見つかりません。MySQL は LEFT OUTER JOIN をサポートしています。 RIGHT OUTER JOIN は、記述時に OUTER を省略できます。 次は LEFT JOIN の図です。LEFT JOIN は、左側のテーブル (table1) のすべてのレコードと、右側のテーブル (table2) の一致するレコードを返します。 次は、RIGHT JOIN の図です。RIGHT JOIN は、右側のテーブル (table2) のすべてのレコードと、左側のテーブル (table1) の一致するレコードを返します。 Set 操作 MySQL には UNION 演算子があり、2 つ以上の SELECT 結果セットを結合し、削除するために使用されます。 SELECT ステートメント間で行を重複します。これを使用する場合は、次の基本ルールに従ってください: すべての SELECT ステートメントに表示される列の数と順序は同じである必要があります。 列も同じデータ型である必要があります。 次のテーブルがある場合、CREATE TABLE t1 ( id INT PRIMARY KEY ); CREATE TABLE t2 ( id INT PRIMARY KEY ); INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t2 VALUES (2),(3),(4);次の SQL を実行しますSELECT id FROM t1 UNION SELECT id FROM t2;最終結果は次のようになります。 +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)UNION ステートメントはデフォルトで結果行セットから重複データを削除しますが、UNION ALL を使用して重複レコードを取得できます。 SELECT id FROM t1 UNION ALL SELECT id FROM t2;結果は次のとおりです+----+ | id | +----+ | 1 | | 2 | | 3 | | 2 | | 3 | | 4 | +----+ 6 rows in set (0.00 sec)UNION と JOIN の基本的な違いは、UNION は結果セットを水平方向に結合するのに対し、JOIN ステートメントは結果セットを垂直方向に結合することです。 #元のアドレス: https://juejin.cn/post/7001772087534682143著者: i Tingfeng Passing Night プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !