更新依赖于另一个表中枚举列的值的表中的值

nzk0hqpo  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(402)

我有一张table placed_order 包含列的 order_time (时间戳), estimated_delivery_time (时间戳)等等。在第二张table上 addresses 这是一列 zone (除了其他)。这个 zone 列是枚举字段,包含值“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子句尝试过了,但是找不到方法。有什么建议吗?

4ngedf3f

4ngedf3f1#

你可以用 Case .. When 更新 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

相关问题