Mysql学习--处理取值为null,多表连接

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符合条件的数据,再连表查询。

      

猜你喜欢

转载自blog.csdn.net/qq_41961316/article/details/84875714