当前位置: 首页 > 面试题库 >

在MySQL中复制记录

宗政学
2023-03-14
问题内容

我有一个表,我想复制表中的特定行。我知道这不是做事情的最佳方法,但我们正在寻找一种快速的解决方案。

这比我最初想的要难,我要做的就是将整个记录复制到MySql中自动增量表中的新记录,而无需指定每个字段。这是因为该表将来可能会更改,并且可能会中断重复。我将从PHP复制MySQL记录。

这是一个问题,因为在’SELECT *’查询中,MySql将尝试复制要复制的记录的ID,这会产生重复的ID错误。

这将阻止: INSERT INTO customer SELECT * FROM customer WHERE customerid=9181。它也封锁了INSERT INTO customer (Field1, Field2, ...) SELECT Field1, Field2, ..... FROM customer WHERE customerid=9181.

有没有办法从PHP或MySQL执行此操作?


问题答案:

我终于找到了这段代码。我相信它将对将来的人们有所帮助。就是这样。

function DuplicateMySQLRecord ($table, $id_field, $id) {
  // load the original record into an array
  $result = mysql_query("SELECT * FROM {$table} WHERE {$id_field}={$id}");
  $original_record = mysql_fetch_assoc($result);

  // insert the new record and get the new auto_increment id
  mysql_query("INSERT INTO {$table} (`{$id_field}`) VALUES (NULL)");
  $newid = mysql_insert_id();

  // generate the query to update the new record with the previous values
  $query = "UPDATE {$table} SET ";
  foreach ($original_record as $key => $value) {
    if ($key != $id_field) {
        $query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'", ';
    }
  }
  $query = substr($query,0,strlen($query)-2); # lop off the extra trailing comma
  $query .= " WHERE {$id_field}={$newid}";
  mysql_query($query);

  // return the new id
  return $newid;
}

这是文章http://www.epigroove.com/posts/79/how_to_duplicate_a_record_in_mysql_using_php的链接



 类似资料:
  • 问题内容: 我已经寻找了一段时间,但找不到适合我问题的简单解决方案。我想在表中复制一条记录,但是当然,唯一的主键需要更新。 我有这个查询: 问题在于,这只是更改行的,而不是复制行。有人知道如何解决这个问题吗? // edit:我想在不键入所有字段名称的情况下执行此操作,因为字段名称会随着时间变化。 问题答案: 我通常使用的方法是使用临时表。它可能在计算上效率不高,但看起来还可以!在这里,我要完全复

  • 问题内容: 我想在MySQL数据库中提取重复记录。这可以通过以下方式完成: 结果是: 我想将其拉出,以使其显示重复的每一行。就像是: 关于如何做到这一点有什么想法?我试图避免做第一个,然后在代码中用第二个查询查找重复项。 问题答案: 关键是重写此查询,以便可以将其用作子查询。

  • 问题内容: 我应该使用MySQL复制来同步本地数据库和远程数据库吗?如果是这样,我该如何设置主机和从机?还有其他方法可以做到这一点吗? 问题答案: 如何设置主/从? 此复制:如何指导同时具有您需要在主服务器和从服务器上进行的操作。 任何其他可用于执行此操作的方法 还有MySQL群集的多主复制和循环复制。

  • 问题内容: 我有桌子,下面的结构。 tbl 查询返回以下结果: 与AAA和BBB重复的名称。我想要的最终结果是此重复记录的计数。 结果应该是这样的:共有重复产品( 2 ) 问题答案: 该方法是使用一个嵌套查询,每个重复项有一行,而一个外部查询仅返回内部查询结果的计数。

  • 请帮助我…每当我启动xammp服务器并尝试启动mysql时,它会出现如下错误。。。

  • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 8年前关闭。 改善这个问题 我在使用MySQL的数据库上执行SQL查询,但仅从预期的24000行中获取了前1000行。如果将结果导出到XML表单,我将再次获得前1000个。有没有办法禁用该限制并取回所有行?否则,我将不得不合并24个XML文件:/ 问题答案: 请执行