リレーショナル データベースでは、INSERT INTO SELECT は、クエリの結果を別のテーブルに挿入するために使用される一般的な SQL ステートメントです。この構文構造は、あるテーブルから別のテーブルにデータを簡単にコピーしたり、いくつかの条件に基づいてデータをフィルタリングして挿入したりするのに非常に役立ちます。
INSERT INTO SELECT の構文構造は次のとおりです。
INSERT INTO 表名 (列1, 列2, 列3, ...) SELECT 列1, 列2, 列3, ... FROM 来源表 WHERE 条件;
このうち、INSERT INTO 句では、データを挿入する対象のテーブルと対象の列を指定します。 SELECT 句は、データを選択するテーブルを定義し、ターゲット テーブルに挿入する列を指定します。すべての列をターゲット テーブルに挿入する必要がないように、必要に応じて適切な列を選択できます。
SELECT 句のソース テーブルは、データが選択されるテーブルを指します。特定のテーブル名またはクエリ結果セットを指定できます。 INSERT INTO SELECT を使用する場合、データ転送とフィルタリングの要件を満たすために、必要に応じて複数のクエリ ステートメントをネストできます。
WHERE 句はオプションであり、ソース テーブル内の特定の条件を満たすデータをフィルタリングするために使用されます。たとえば、WHERE 句を使用して特定の条件を満たす行のみの挿入を制限したり、他の演算子 (IN、LIKE など) を使用してデータをさらにフィルタリングしたりできます。
次に、INSERT INTO SELECT の使用例をいくつか示します。
単純な挿入操作:
2 つのテーブル A と B があるとします。テーブル A には、列 id、name、および列が含まれています。 age、テーブル B には列 id と address が含まれています。テーブル A のデータをテーブル B の対応する列に挿入するには、次のステートメントを使用できます。
INSERT INTO B (id, address) SELECT id, name FROM A;
このようにして、テーブル A の id 列の値がテーブルの id 列に挿入されます。 B. テーブル A の名前列の値がテーブル B のアドレス列に挿入されます。他の列は無視されます。
WHERE 句を使用してフィルタリングします:
特定の条件を満たすデータのみを挿入する場合は、SELECT ステートメントに WHERE 句を追加できます。たとえば、テーブル A の年齢が 18 を超えるレコードのみをテーブル B に挿入するには、次のステートメントを使用できます。
INSERT INTO B (id, address) SELECT id, name FROM A WHERE age > 18;
このようにして、条件を満たす行のみがテーブル B に挿入されます。 。
サブクエリを使用した挿入:
SELECT 句では、サブクエリを使用してデータを選択することもできます。たとえば、条件を満たす行を別のテーブルに挿入するには、次のステートメントを使用できます。
INSERT INTO C (id, address) SELECT id, address FROM B WHERE id IN (SELECT id FROM A WHERE age > 18);
この方法では、最初にテーブル A から条件を満たす ID を選択し、次に対応する ID を選択します。これらの ID レコードに基づいてテーブル B から取得し、テーブル C に挿入します。
概要
INSERT INTO SELECT は、あるテーブルから別のテーブルにデータを簡単にコピーしたり、いくつかの条件に基づいてデータをフィルタリングして挿入したりできる強力な SQL ステートメントです。その柔軟性により、実際のデータベース操作に非常に役立ちます。
以上が選択への挿入の使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。