需求背景:
假设我们有一个流水表,流水表里记录了用户获得礼物的信息。不同的用户对收到的礼物折现的比例不同,由于长时间的迭代逻辑,控制这个折现比例的字段不止一个。
具体来说,需要首先判断level字段,查看用户是否有等级认证,如果有,则根据等级认证的逻辑来计算折现比例。其次,再查看是否是优质用户,如果是优质用户则根据优质用户的逻辑来计算折现比例,再然后查看是否是一般认证用户,如果是,则根据一般认证用户的逻辑来计算折现比例,最后根据默认值计算折现比例。
实现方式:
COALESCE(value1,value2,value,······)
COALESCE函数将会返回传入的第一个不为nil的值,因此可以搭配if语句来实现需要的需求。
主要使用方式是
COALESCE(if(level > 0,1,NULL), if(is_high_quality_user = true, 2, NULL), if(is_normal_user = true, 3, NULL), 0) //如果返回值为0则是默认,1为level,2为优质,3为普通
这样就可以在select的时候确定需要的处理逻辑方式,甚至可以直接使用一条select统计出所有需要的数据。