mysql - 从依赖于另一个表中 ENUM 列的值的表中更新值

标签 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 子句但找不到方法。有什么建议吗?

最佳答案

您可以使用 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 

关于mysql - 从依赖于另一个表中 ENUM 列的值的表中更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52920638/

相关文章:

php - 使用 WordPress 插入或更新命令时,列将不会收到正确的值

mysql - MySQL 中的 SELECT 查询

php - 使用 PHP 保存日语字符

enums - 如何将字符串转换为枚举?

java - 从 Java 中的 Enum 类型参数获取信息

c - 最佳常量 c 约定

java - 无法在 postgresql 中使用 AND 运算符更新数据库中的值

php - 为什么 UPDATE 会创建新记录?

mysql - 如何备份表而不是 View

php - 重用 PDO 语句 var 使进程崩溃