zoukankan      html  css  js  c++  java
  • mysql的联合查询join中coalesce函数的妙用 解决join联合查询中null默认值的问题

    ###########################

    场景:

    业务在使用join联合查询的时候,比如有两张表A和B,A表有mobile和success两个字段,B表有mobile和fail两个字段,然后通过mobile字段关联这两张表,但是要求只有mobile字段值相同的数据,都需要输出success和fail字段,如果这两个字段中有null,则对应的输出不能为null而是改为0

    一般的join:

    select A.mobile,A.success,B.fail   from A full join B on A.mobile=B.mobile

    改进的join:

    select A.mobile, coalesce(A.success,0),soalesce(B.fail,0)   from A full join B on A.mobile=B.mobile
    select coalesce(字段名,0) as value from t;
    coalesce()解释:返回参数中的第一个非空表达式(从左向右依次类推); 
    
    使用示例:a,b,c三个变量。
    
    select coalesce(null,2,3); // Return 2
    
    select coalesce(null,null,3); // Return 3
    
    select coalesce(1,2,3); // Return 1
    复制代码
    通过上面例子可以看出,他的作用是将返回传入的参数中第一个非null的值,再比如 
    
    SELECT COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); 
    -- Return 1 
    如果传入的参数所有都是null,则返回null,比如 
    SELECT COALESCE(NULL, NULL, NULL, NULL); 
    -- Return NULL 
    
    这个参数使用的场合为:假如某个字段默认是null,你想其返回的不是null,而是比如0或其他值,可以使用这个函数 
    SELECT COALESCE(字段名,0) as value from t;

    ############################

     

    #############################

    igoodful@qq.com
  • 相关阅读:
    java中过滤器和拦截器的区别
    Java中内部类和静态内部类的区别
    SpringBoot启动的时候切换配置文件命令
    centos7安装Subversion
    关于curl_setopt参数的记录
    Linux Samba文件共享服务,安装与案例配置
    CentOS7源码安装Redis5.0.4非关系型数据库
    Centos7部署LAMP平台之架构之路
    Centos7安装及配置DHCP服务
    CentOS 7源码安装MYSQL-5.6
  • 原文地址:https://www.cnblogs.com/igoodful/p/15624398.html
Copyright © 2011-2022 走看看