【问题标题】:Mysql - How can I transfer data from one table to another on a specific day and time in the week, every week?Mysql - 如何在每周的特定日期和时间将数据从一个表传输到另一个表?
【发布时间】:2016-08-31 09:09:44
【问题描述】:

我想在每周的特定日期(星期五 20:00)将数据从一个表传输到另一个表。我还想每周日重置第一个表中的数据。

当我运行这一行时,它会将正确的数据发送到正确的表 (table1)。

$sql = "INSERT INTO table1 (Name, Email, Phone, Work, Week)
    VALUES ('$name', '$email', '$phone', '$work', '$weekNumber')";

当我运行这一行时,它会从 table1 向 table2 发送一个随机行。它不会在 table1 中存储任何新数据,仅使用已存储在 table1 中的数据。

$sql = "INSERT INTO table2 (Name, Email, Work, Week) SELECT Name, Email, Work, Week FROM table1 Where Week = ('$weekNumber') ORDER BY RAND() LIMIT 1";

所有这些代码都写在一个 php 文件中,我在 phpMyadmin 中查看表格。

有没有任何 sql-guru 对我如何在每周五 20:00 将 table1 中的数据传输到 table2 提出建议?提前欣赏。请记住,我是编写 sql 代码的新手,本周才开始使用数据库,因此我非常感谢具体的代码示例,而不是关于如何理解我的目标的一般信息。不过结合起来最好。

【问题讨论】:

  • 你能指出,你的实际问题是什么?您是否需要一般的优化建议(设计、架构、性能?),或者您是否遇到错误,或者您的代码没有按照您的意愿执行?请尝试更具体一点,然后您可能会得到更多有用的答案;-)
  • 谢谢斯特凡。我是新来的,感谢您的指导。

标签: mysql database datatable


【解决方案1】:

您可以使用 MySQL 中的事件调度器轻松完成此操作

https://www.sitepoint.com/how-to-create-mysql-events/

http://www.mysqltutorial.org/mysql-triggers/working-mysql-scheduled-event/

例如,您可以使用以下方法每天执行特定任务:

 DELIMITER ;; 
    CREATE EVENT UpdateData ON SCHEDULE EVERY DAY STARTS '2016-10-10 00:00:00' -- This is scheduled to start from '2016-10-10' and updates data every day 
      DO BEGIN 
        UPDATE table1 SET Status = 1 WHERE Status = 0; 
        UPDATE table2 SET Status = 1 WHERE Status = 0;
     END;; 
 DELIMITER ;

【讨论】:

  • 好的,我会试着用 MySQL 事件调度器来解决这个问题。我将其视为我的最终解决方案,因为其他人也将其称为解决我的问题的唯一方法。谢谢。
【解决方案2】:

@Willi W 试试这个

$sql = "INSERT INTO table2 (Name, Email, Work, Week) SELECT Name, Email, Work, Week FROM table1 as a Where Week = ('$weekNumber') and NOT EXISTS (Select * FROM table2 as b where b.Name=a.Name and b.Email=a.Email and b.Work=a.Work and b.Week=a.Week) ORDER BY RAND() LIMIT 1";

这将在 table2 中插入唯一数据。

【讨论】:

  • 当我尝试此代码时,我正在处理的表单不会提交。
  • @Willi W 请解释你这么说的原因。您使用的是哪种类型的表格?
  • 用户提交的基本 html 表单。
  • 那么上面的查询有什么问题。请详细解释,因为我没有得到你需要的东西?
  • 我需要创建一个 sql 代码,它将在每周五 20:00 将数据从一个表传输到另一个表。目前我的代码将数据提交到正确的数据库和表,但我创建了另一个表,我希望第一个表中的数据在每周五 20:00 出现/传输。
猜你喜欢
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多