【问题标题】:mysql find series of records in table A, copy to table Bmysql在表A中查找一系列记录,复制到表B
【发布时间】:2017-07-22 02:47:31
【问题描述】:

我现在正在尝试编写一个 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'")

关于我可以做些什么来实现这一点的任何建议?

【问题讨论】:

  • 表A和表B有相似的字段吗? ?
  • 是的,它们有相同的字段
  • 我猜你已经得到了下面的答案。 . :)

标签: php mysql copy multiple-entries


【解决方案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”。

【讨论】:

    【解决方案2】:

    您可以使用单个查询进行选择和插入,例如:

    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,但在本例中它已经存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      相关资源
      最近更新 更多