1対多の関係で接続された2つのテーブルがあります。
親テーブルは、id および first_name 列を持つ単純なユーザー テーブルです。
親
id | first_name
1 | Bob
2 | Dick
3 | Harry
4 | Tom
5 | Holly
子テーブルには、ユーザーの保険の選択が含まれています。
子
id | insu_id | user_id | year
1 | 188765 | 1 | 2008
2 | 188765 | 1 | 2009
3 | 188765 | 1 | 2010
4 | 188765 | 1 | 2011
5 | 188765 | 1 | 2012
テーブルが次のようになるように、u 1の保険選択をser_id
残りのすべてのユーザー、つまり子テーブルの2、3、4、5にコピーしたい
id | insu_id | user_id | year
1 | 188765 | 1 | 2008
2 | 188765 | 1 | 2009
3 | 188765 | 1 | 2010
4 | 188765 | 1 | 2011
5 | 188765 | 1 | 2012
6 | 188765 | 2 | 2008
7 | 188765 | 2 | 2009
8 | 188765 | 2 | 2010
9 | 188765 | 2 | 2011
10 | 188765 | 2 | 2012
11 | 188765 | 3 | 2008
12 | 188765 | 3 | 2009
13 | 188765 | 3 | 2010
14 | 188765 | 3 | 2011
15 | 188765 | 3 | 2012
16 | 188765 | 4 | 2008
17 | 188765 | 4 | 2009
18 | 188765 | 4 | 2010
19 | 188765 | 4 | 2011
20 | 188765 | 4 | 2012
21 | 188765 | 5 | 2008
22 | 188765 | 5 | 2009
23 | 188765 | 5 | 2010
24 | 188765 | 5 | 2011
25 | 188765 | 5 | 2012
私に何ができる
INSERT INTO child(insurance_id, user_id, year) SELECT insurance_id, '2', year FROM child WHERE user_id = 1
INSERT INTO child(insurance_id, user_id, year) SELECT insurance_id, '3', year FROM child WHERE user_id = 1
INSERT INTO child(insurance_id, user_id, year) SELECT insurance_id, '4', year FROM child WHERE user_id = 1
INSERT INTO child(insurance_id, user_id, year) SELECT insurance_id, '5', year FROM child WHERE user_id = 1
私が欲しいもの
INSERT INTO() SELECT
ユーザー数がそれを超えて増加する可能性があるため、4 つの異なるクエリを実行したくありません。ハードコーディングではなく、user_id を動的に選択する 1 つのクエリが必要です。