【问题标题】:Copying random rows from one MySQL table to another MySQL table with a different schema将随机行从一个 MySQL 表复制到另一个具有不同模式的 MySQL 表
【发布时间】:2016-09-23 08:14:40
【问题描述】:

我有一个名为 locations 的数据库表,它有许多位置遵循此架构:lid(PID), name, totalVotes, timeSince,我想从该表中随机选择 4 行并将它们复制到另一个架构为 sid(PID), lid(Foreign), votes 的表中。我想每天设置一个 cron 作业来执行此操作,所以我首先编写一个 PHP 脚本,然后再设置该 cron 作业。

我在让脚本正常工作时遇到问题,因为我选择的数据库中没有反映任何更改。这是我迄今为止在copy.php 中的尝试:

<?php
  // create connection
  mysql_connect("localhost","root",NULL);
  @mysql_select_db("Locations") or die("Unable to select db");

  // this SQL statement moves 4 random rows from locations to selected table
  $sql = "INSERT INTO selected (lid) SELECT lid FROM locations WHERE lid IN (SELECT lid FROM locations ORDER BY RAND() LIMIT 4);";


  mysql_query($sql);
  mysql_close();
  echo "all good";
?>

当我刷新我的localhost/copy.php 时,我收到“一切正常”的消息,但我的selected 表中再次没有任何变化。

【问题讨论】:

  • 首先,您是要移动还是复制?我只在你的例子中看到了复制。
  • @Piskvor 复制,我很抱歉
  • 使用 mysql_affected_rows() php.net/manual/en/function.mysql-affected-rows.php 获取真实性并检查错误。你在这里得到一个误报,这意味着你有错误,但你没有检查它们。

标签: php mysql sql database cron


【解决方案1】:

你能试试这个吗? 不需要第一次选择,并且您认为您在查询结束时有一个 Bad ;

INSERT INTO selected (lid) (SELECT lid FROM locations ORDER BY RAND() LIMIT 4)

【讨论】:

  • “并且你认为你在查询结束时有一个错误的; - LIMIT 4);"; 是有效的语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2015-05-17
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
相关资源
最近更新 更多