1

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

  1. 使用唯一的主 ID 搜索数据库中的特定记录。
  2. 然后它应该在表中搜索与第一条记录的某些字段匹配的记录(例如,查找名称和日期与“记录一个”相同的所有条目)
  3. 然后它应该将所有匹配的条目复制到一个新表中。

现在我让它只抓取一个匹配的条目然后停止。如何格式化它以复制所有条目?

$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 回答