MySQL在一个语句中选择和更新

时间:2014-03-08 10:26:30

标签: mysql sql select

我想要一个MySQL命令
UPDATE.....SELECT 更新我的Previous_Change_Date 如下表所示。

有人可以帮忙吗?

+----------------+-------------+----------------------+
| Product_Number | Change_Date | Previous_Change_Date |
+----------------+-------------+----------------------+
|       30000319 |  1178581980 |           1178581860 |
|       30000319 |  1178581860 |           1170916740 |
|       30000319 |  1170916740 |           1138779000 |
|       30000319 |  1138779000 |                 NULL |
|       30000327 |  1178581860 |           1138779000 |
|       30000327 |  1138779000 |                 NULL |
|       30000348 |  1170916740 |           1162451400 |
|       30000348 |  1162451400 |                 NULL |
|       30000443 |  1195713360 |           1191287160 |
|       30000443 |  1191287160 |           1184720940 |
|       30000443 |  1184720940 |           1176421080 |
|       30000443 |  1176421080 |           1173766980 |
|       30000443 |  1173766980 |           1173050460 |
|       30000443 |  1173050460 |           1170816780 |
|       30000443 |  1170816780 |           1170496980 |
|       30000443 |  1170496980 |           1166078340 |
|       30000443 |  1166078340 |                 NULL |
+----------------+-------------+----------------------+

2 个答案:

答案 0 :(得分:0)

我建议使用mysql stored procedure。这样你就可以拥有变量和循环的奢侈品。这将更容易实现和维护。

您可以使用this post作为介绍性教程。

希望我帮忙!

答案 1 :(得分:0)

我建议在插入时使用trigger,这里有一个触发器

trigger fiddle

但是如果你不想要这里是你能做的:

INSERT INTO table_name (Product_Number, Change_Date, Previous_Change_Date) 
VALUES (product_num_value, change_date_value, 
(SELECT date FROM (SELECT MAX(Change_Date) AS date FROM table_name 
WHERE Product_Number='product_num_value') as temp_table));

您必须将table_name更改为实际的table_name并更改值product_num_valuechange_date_value

这是fiddle