MySQL案例匹配所有条件

时间:2018-04-04 06:37:01

标签: mysql case

我有类似的功能,

  

选择
案例
当purchase_date< =' 2017-12-31'然后(更新   report_table set year = 2017 where item_id =' ..')
何时   purchase_date< =' 2018-03-31'然后(更新report_table set year = 2018   其中item_id =' ..')其他null结束为year_purchase ...

如果在2017年12月30日购买的商品应满足这两个条件。

通过引用MySQL指南,它说它只能在then else语句中执行。如何实现多个if语句以便我的条件都执行。

我甚至尝试过if if但没有运气。

2 个答案:

答案 0 :(得分:0)

我认为更简单的方法是将year列直接分配给日期的年份值:

UPDATE report_table
SET year = YEAR(purchase_date)
WHERE YEAR(purchase_date) IN (2017, 2018) AND item_id = <some_value>;

但是我没有看到在表格的单独栏中单独保留年份编号的意义,因为它可以很容易地从完整日期派生,因为这意味着浪费一些空间。

答案 1 :(得分:0)

  

select * from(
选择
案例
当purchase_date&lt; =时   '2017-12-31'然后(选择金额)结束为purchase_amount
  结合所有
选择
案例
当purchase_date&lt; ='2018-03-31'然后(选择金额)
结束为purchase_amount)

使用union all完成了这项工作。