1

私は今PHPスクリプトを書こうとしています

  1. 一意のプライマリ ID を使用して、データベース内の特定のレコードを検索します。
  2. 次に、最初のレコードの特定のフィールドに一致するレコードをテーブルで検索する必要があります (たとえば、「レコード 1」と同じ名前と日付を持つすべてのエントリを検索します)。
  3. 次に、一致するすべてのエントリを新しいテーブルにコピーする必要があります。

現在、一致するエントリを 1 つだけ取得して停止しています。これをフォーマットしてすべてのエントリをコピーするにはどうすればよいですか?

$query = sprintf("SELECT name, date FROM original_table
WHERE id='%s'",
mysql_real_escape_string($id)); 
$result = mysql_query($query);

$row=mysql_fetch_array($result);


//find and copy all matching entries
$query = sprintf("INSERT into second_table(all fields)
SELECT all fields FROM original_table WHERE name='%s' AND date='%s'")

これを達成するために私ができることについて何か提案はありますか?

4

2 に答える 2

1

SQL では、必要なクエリは次のとおりです。

INSERT into second_table(all fields)
    SELECT ot.all fields
    FROM (select *
          from original_table ot
          where key = <thekey>
         ) rec join
         original_table ot
         on rec.name = ot.name and
            rec.date = ot.date

元のキーを除外しますか? その場合、「and rec.key <> ot.key」を含めます。

于 2012-08-16T02:14:48.373 に答える
1

単一のクエリで選択して挿入できます。次に例を示します。

INSERT INTO new_table (name, date, etc)
SELECT name, date, etc FROM old_table
WHERE name='%s' AND date='%s'

説明:

1 行目: 新しいテーブルに挿入する列を定義します
2 行目: 古いテーブルからデータを選択します
3 行目: コピーする対象を WHERE または ON ステートメントで指定します

new_table を動的に作成することもできますが、この例では既に存在しています。

于 2012-08-16T02:17:47.497 に答える