If语句是否有mysql中规则的例外?

问题描述 投票:0回答:1

我在使用if语句创建以下逻辑时遇到麻烦。我认为这类似于excel中的嵌套if语句,但我不确定如何在MySQL中进行处理。

我有一个字段称为程序包,2019年价格和2020年价格,状态和细分。

对于每笔交易,如果“日期”字段= <2019,请使用“ 2019价格”字段;如果“日期”字段> = 2020,请使用“ 2020价格”字段。作为此规则的例外,如果State ='CO'和Segment ='promo',请使用“ 2019 Price”字段。

我开始在下面编写if语句。我只是不确定如何将例外添加到规则中:

IF(`Date` >= '2020-01-01', `2020 EFT`, `2019 EFT`) as `Price`

任何帮助将不胜感激,并将其添加到我的sql工具带中!谢谢!

mysql sql
1个回答
0
投票

使用CASE来实现多个条件。它按顺序测试它们,因此您可以将异常放在首位。

CASE WHEN State = 'CO' AND Segment = 'promo' THEN `2019 EFT`
     WHEN Date >= '2020-01-01' THEN `2020 EFT`
     ELSE `2019 EFT`
END AS Price

您也可以将条件与OR组合。

IF(Date < '2020-01-01' OR (State = 'CO' AND Segment = 'promo'), `2019 EFT`, `2020 EFT`) AS Price

我建议您在组合ANDOR条件时始终使用括号,因为默认优先级并不总是您所期望的。

© www.soinside.com 2019 - 2024. All rights reserved.