mysql在表A中查找系列记录,复制到表B中

时间:2012-08-16 02:08:19

标签: php mysql copy multiple-entries

我正在尝试编写一个PHP脚本

  1. 使用唯一的主ID来搜索数据库中的特定记录。
  2. 然后应该在表格中搜索与第一条记录的某些字段匹配的记录(例如,查找名称和日期与“记录一”相同的所有条目)
  3. 然后应将匹配的所有条目复制到新表中。
  4. 现在我只有抓住一个匹配的条目然后停止。如何格式化以复制所有条目?

    $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'")
    

    关于我能做些什么来完成这项任务的建议?

2 个答案:

答案 0 :(得分: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

您要排除原始密钥吗?如果是,请包含“和rec.key&lt;&gt; ot.key”。

答案 1 :(得分: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,但在此示例中它已经存在。