PHP+MySQL レコードの複製について質問です。(MySQLバージョン5)

下記のようなデータがあります。
重複するフィールド値が多いのでID:2を複製して新たにID:3を作った上で該当箇所をUPDATEしたいと考えております。
実際にはフィールド数が多いのでPHPで一括処理を行いたいのですが、良い方法があれば教えてください。
(IDはauto_incrementです)

実行前
+------+-------+-------+-------+
| ID | data1 | data2 | data3 |.....
+------+-------+-------+-------+
| 1 | aaaa1 | bbbb1 | xxxxx |.....
| 2 | aaaa1 | bbbb1 | yyyyy |.....
+------+-------+-------+-------+


実行後
+------+-------+-------+-------+
| ID | data1 | data2 | data3 |.....
+------+-------+-------+-------+
| 1 | aaaa1 | bbbb1 | xxxxx |.....
| 2 | aaaa1 | bbbb1 | yyyyy |.....
| 3 | aaaa1 | bbbb1 | yyyyy |.....
+------+-------+-------+-------+

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/08/13 21:23:27
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:yamaneroom No.1

回答回数1040ベストアンサー獲得回数61

SQL文だけでできる。

insert into テーブル名 select * from テーブル名 where ID=2;
id:clab_yasu

何も反応がありませんでした。(エラーも出ません)

2010/08/13 20:20:04
  • id:windofjuly
    うぃんど 2010/08/13 20:05:12
    前回のcssに引き続き、同じアカウントが間違い(毎日大量の間違いを投稿してますので「嘘」といってもいいかもしれません)を教えていますね
    clab_yasu さんの事を「嘘を教えてもポイントをくれる人」だと認識してしまったのかもしれません
    (他の質問者に対しても同様の行為を毎日繰り返していますが、今のところはてなのサポートは未対応のままです。利用者同士で注意しあいましょう)
    下記、参照して不適切な回答欄にチェックを入れておくと良いでしょう
    http://hatena.g.hatena.ne.jp/hatenaquestion/20100212/1265942197
     
    今php+MySQLが使える環境にいないのでヒントの手順だけを書いておきます
    (1)テーブルからID=2のレコードをphpの連想配列に読み込みます
    http://www.php.net/manual/ja/function.mysql-query.php
    http://www.php.net/manual/ja/function.mysql-fetch-assoc.php
    (2)連想配列の該当項目を置き換えます
    (3)連想配列を使ってINSERT文を生成して実行します
    頻繁に行う作業であればprepareステートメントの利用を考えたいところですが少々環境に依存するところがあるので、必要であれば別途学んでください
  • id:karuishi
    >insert into テーブル名 select * from テーブル名 where ID=2;

    これはヒドイな。
    ID=3の属性が全く無いから同じレコードを書いてるだけじゃんwww
     
    キャンセルして再質問したほうがいいですよ。
  • id:clab_yasu
    お世話になります。ご親切にありがとうございます。
    連想配列にて試行錯誤してみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません