doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

SQLで別のテーブルに別のSELECTクエリの結果を挿入する

スポンサーリンク

別のテーブルにクエリの結果を挿入する

INSERT INTO文を使用して、他のテーブルのすべての行または一部の行をテーブルに挿入することもできます。 SQL SELECT文を使用して、1つ以上の基準に基づいて別のテーブルの行がフェッチされます。

例:

サンプル表:エージェント

サンプルテーブル:agentbangalore

以下の条件で、 'agents'テーブルのレコードを 'agentbangalore'テーブルに追加します -

1. 'agents'テーブルの 'working_area'は 'Bangalore'でなければなりません。

次のSQL文を使用できます。

SQLコード:

 INSERT INTO agentbangalore SELECT * FROM agents WHERE working_area="Bangalore"; 

Copy

次の順序で別のテーブルにクエリの結果を挿入する

ある表の行の並び順(昇順または降順)は、ORDER BY句とともにSQL SELECT文を使用して、別の表に挿入することもできます。

例:

サンプルテーブル:agentbangalore

ンプル表:エージェント

以下の条件で、 'agents'テーブルのレコードを 'agentbangalore'テーブルに追加します -

1. 「agent」テーブルの行は、「agent_name」列の降順に並べます。

2. 'agents'テーブルの 'working_area'は 'Bangalore'でなければなりません。

次のSQL文を使用できます。

SQLコード:

 INSERT INTO agentbangalore SELECT * FROM agents WHERE working_area="Bangalore" ORDER BY agent_name DESC; 

Copy

group byを使って別のテーブルにクエリの結果を挿入する

あるテーブルの行のグループは、GROUP BY句と一緒にSQL SELECTステートメントを使用して、別のテーブルに挿入することもできます。

例:

サンプル表:注文

以下の条件で、 'orders'テーブルの同じ列から 'ord_date'、 'ord_amount'および 'advance_amount'列のレコードを 'daysorder'テーブルに追加するには -

1. 'orders'テーブルの行を 'ord_date'に従ってグループにまとめます。

2.各グループについて「ord_amount」の合計を求めます。

3.各グループの「advance_amount」の合計を作ります。

4. ordersテーブルの各グループのデータをdaysorderテーブルに挿入します。

次のSQL文を使用できます。

SQLコード:

 INSERT INTO daysorder (ord_date,ord_amount,advance_amount) SELECT ord_date,SUM(ord_amount),SUM(advance_amount) FROM orders GROUP BY ord_date; 

Copy

select with group byおよびorder byを使用してレコードを挿入する

以下では、INSERT INTOステートメントでORDER BYおよびGROUP BYとともにSQL SELECTステートメントを使用して、別のテーブルのレコードを挿入する方法について説明します。

例:

サンプル表:注文

サンプルテーブル:daysorder

以下の条件で、 'orders'テーブルの同じ列から 'ord_date'、 'ord_amount'および 'advance_amount'列のレコードを 'daysorder'テーブルに挿入するには -

1. 'orders'テーブルの行は、 'ord_date'に従ってグループにまとめられるべきです。

2. 「orders」テーブルの行は、「ord_date」列の降順に並べます。

3.各グループについて「ord_amount」の合計を求めます。

4.各グループの「advance_amount」の合計を作ります

'orders'テーブルの各グループのデータを 'daysorder'テーブルに挿入します。

次のSQL文を使用できます。

SQLコード:

 INSERT INTO daysorder (ord_date,ord_amount,advance_amount) SELECT ord_date,SUM(ord_amount),SUM(advance_amount) FROM orders GROUP BY ord_date ORDER BY ord_date DESC 

Copy

モデルデータベースを見る

これは、SQLの習得やインタビューに役立つ、簡潔で簡単な回答をまとめた質問の集まりです。