29329


MySQLで、一つのテーブル内でレコードをコピーしようと思います。  
「一つのレコードの複製を複数行作成する」操作を１回の操作で実行することは可能でしょうか？  
複数行挿入する場合は、「INSERT INTO VALUES(...),(...)」で実行できます。  
単純に複製する場合は、「INSERT～SELECT」を使うことでできます。  
しかし、「一つのレコードの複製を複数行挿入する方法」がわかりません。  
一度コピー元のデータを読み込んでから、「INSERT INTO
VALUES(...),(...)」を実行するか、「INSERT～SELECT」を複数回実行するかしかないのでしょうか？

よろしくお願いいたします。  
Mysql Ver.5.0.51a


CC BY-SA 3.0
2016-10-03T14:05:41.440
29325
2016-10-14T05:34:27.733
2016-10-14T05:34:27.733
754
11105
question
mysql sql
MySQL 単一テーブル内でのレコードのコピーについて


SELECT は UNION で複数繋ぐことができるので、これを指定すればいいと思います。

[code]

    INSERT INTO tbl (col1, col2) SELECT col1, col2 FROM tbl WHERE ... UNION ALL SELECT col1, col2 FROM tbl WHERE ...
    
[/code]


CC BY-SA 3.0
2016-10-03T23:31:02.057
29329
2016-10-04T12:31:40.557
2016-10-04T12:31:40.557
3249
3249
29325
answer


少し強引ですが、適当なテーブルと結合して複製するのはどうでしょうか？  
今後も使う場合は、適当なテーブルの部分は、  
ダミーのレコードを返すストアドを作成してもいいかもです。

[code]

    INSERT
        INTO
            コピー先テーブル(
                col1
                ,col2
            )
            SELECT
                  copy_tbl.col1
                  ,copy_tbl.col2
              FROM
                  コピー先テーブル copy_tbl
                  LEFT JOIN (
                      SELECT
                            col1
                        FROM
                            適当なテーブル 
                        LIMIT 繰り返し件数
                      ) dummy_tbl
                  ON 1 = 1;
    
[/code]


CC BY-SA 3.0
2016-10-05T04:22:50.467
29366
2016-10-05T04:22:50.467
19001
29325
answer