从表中更新值,该值取决于另一个表中的ENUM列的值

时间:2018-10-21 23:00:33

标签: mysql enums sql-update dateadd

我有一个表placed_order,其中包含列order_time(时间戳),estimated_delivery_time(时间戳)等等。在第二个表addresses中,有zone列(其他列除外)。 zone列是一个ENUM字段,包含值“ Zone 1”,“ Zone 2”,“ Zone 3”。

现在,我需要计算estimated_delivery_time。视区域而定,是order_time加10分钟(1区),15分钟(2区)或20分钟(3区)。

我已经找到了如何通过手动添加分钟数来计算estimated_delivery_time的方法:

UPDATE `placed_order` 
SET `estimated_delivery_time` = DATE_ADD(`order_time`, INTERVAL 10 MINUTE)
WHERE placed_order_id = 9;

但是我绝对很难找到一种解决方案,如何根据区域来计算estimated_delivery_time。我已经使用SELECT IF和CASE子句进行了尝试,但是找不到方法。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用http://www.ampps.com/wiki/How_to_change_php_version更新estimated_delivery_time。尝试以下查询:

UPDATE `placed_order` AS po 
JOIN `addresses` AS addr ON addr.customer_id = po.customer_id 
SET po.estimated_delivery_time = CASE addr.zone 
                                   WHEN 'Zone 1' 
                                     THEN DATE_ADD(po.order_time, INTERVAL 10 MINUTE)
                                   WHEN 'Zone 2' 
                                     THEN DATE_ADD(po.order_time, INTERVAL 15 MINUTE)
                                   WHEN 'Zone 3' 
                                     THEN DATE_ADD(po.order_time, INTERVAL 20 MINUTE)
                                 END