每周一次将某些数据从一个表更新到另一个表

时间:2015-07-29 22:23:07

标签: mysql tsql sql-update job-scheduling

我的最终目标是在特定条件下更新表1到表2的信息。更具体地说,我想更新从table1到table2的日期,其中id的匹配和table2中的日期为NULL。

我希望每个星期天都能这样做。

以下是具体细节:

**请记住,payee_id和id是相同的,但在两个不同的表中。 **

我打算从中复制的表称为订单,但我只想从该表中选择某些数据。我的查询如下:

表1

]

输出1

SELECT movement.payee_id,
min(origin_stop.sched_arrive_early) first_date

FROM orders

LEFT JOIN movement_order ON orders.id = movement_order.order_id
LEFT JOIN movement ON movement.id = movement_order.movement_id
LEFT JOIN stop as origin_stop ON origin_stop.id = movement.origin_stop_id

WHERE orders.status <> 'V'
GROUP BY movement.payee_id

表2

payee_id           |  first_date
-------------------|-----------------
STRINGID1          |  2013-12-20 15:00:00.000
STRINGID2          |  2013-12-27 13:00:00.000

输出2

SELECT id, initial_date
FROM drs_payee

表2输出应该是:

id                 |  initial_date
-------------------|-----------------
STRINGID1          |  NULL
STRINGID2          |  NULL

我试图解决这个问题:

id                 |  initial_date
-------------------|-----------------
STRINGID1          |  2013-12-20 15:00:00.000
STRINGID2          |  2013-12-27 13:00:00.000

不确定这种格式是否正确,以及你是否可以在UPDATE中进行SELECT,如上所示。

我相信我必须有一个循环才能找到匹配UPDATE drs_payee a (SELECT movement.payee_id, min(origin_stop.sched_arrive_early) carrier_first_shipped_date FROM orders LEFT JOIN movement_order ON orders.id = movement_order.order_id LEFT JOIN movement ON movement.id = movement_order.movement_id LEFT JOIN stop as origin_stop ON origin_stop.id = movement.origin_stop_id WHERE orders.status <> 'V' GROUP BY movement.payee_id) b ON a.id = b.payee_id SET a.initial_date = b.first_date WHERE a.initial_date IS NULL 的ID。这是在存储过程中创建的,以循环id并创建每周作业计划或某种类型的更新查询是否足够?如果可能的话,请使用我的数据帮助或指导我使用更新查询或存储过程示例。

先谢谢大家!

2 个答案:

答案 0 :(得分:0)

对于预定查询,对我来说最好的事情是创建事件。首先你必须选择你的数据库,在右上角你会看到一个名为&#34; events&#34;的phpmyadmin中的选项。您必须打开事件计划程序,并在phpMyadmin中使用超级权限用户登录。

执行此操作后,查询为:

&#13;
&#13;
body {
  background: linear-gradient(to left top, blue, red) fixed;
}
&#13;
&#13;
&#13;

必须有效。

如果您需要有关超级优惠检查this

的帮助

我希望它适合你。

Caio Ortega

答案 1 :(得分:0)

更新table2  payee_id = id上的内连接table1    set initial_date = first_date其中initial_date为null

通过SQL Server代理,我们可以根据我们的要求(例如每个星期天)安排查询