1:处理取值为null,需要转变为0.
(1)COALESCE ,总是返回第一个不为null的值。
例如:SELECT COALESCE (SUM( class3),0) AS total FROM t_third_common_consumption WHERE `tenant_id`='mylsxVtRvaVcSSuylZtAOYROaYknOjzm';
sum(class3)返回为null,COALESCE 返回第一个不是null的值,所以返回0,COALESCE (SUM( class3),NULL,2)返回2。也可以返回字符串。
(2)ifnull(null,x):适用于mysql数据库
SELECT IFNULL (SUM( class3),3) AS total FROM t_third_common_consumption c WHERE c.`tenant_id`='mylsxVtRvaVcSSuylZtAOYROaYknOjzm';
如果sum(class3)计算值为null,则返回参数x,3;
2:处理计算被除数为0的情况。
(1)CASE WHEN 条件 THEN 值 ELSE 值 END
例如:
SELECT COALESCE(5/(CASE WHEN flag>0 THEN flag ELSE NULL END),'被除数为空') FROM t_wechat_staff_rel s WHERE s.`id`=1;
case when 后面的flag>0,表示条件 ,then 后面表示条件成立时 被除数的表达式或者值,else 后面表示条件不成立时被除数的取值,end 表示结束。在mysql中,被除数为null时,结果为null。这里用COALESCE返回提示。
3:mysql的多表连接(内连接)
内连接 inner join 表 on 条件
例如:
SELECT node_id ,flag,i.`name` NAME FROM t_wechat_staff_rel s INNER JOIN t_wechat_shop_info i ON s.`node_id` = i.`shop_id`
WHERE
s.`node_id`
IN ('xlnsSyoKTFjqDDMeKPHowINshNDAQAwS','jnRWoUBDCxJhCZgciPoYxlmQegAsDxyc','wEZqQJmewcoINMrAthoWdrLfnonxtDSC','mjijkjypouLKjMsSclmMZxWDNYgCjVKN')
GROUP BY node_id ORDER BY flag DESC;
上述例子:inner join 后面 跟随另一张表,on 后面的条件是连接两张表的条件。where 后面的条件表示查询t_wechat_staff_rel 表的条件,由where先查询出t_wechat_staff_rel符合条件的数据,再连表查询。