zoukankan      html  css  js  c++  java
  • sql常用方法&SQL中left join 和right join 注意事项

    (顺便分享一下sql中的一些常用方法和函数

    格式化日期:DATE_FORMAT('2021-08-31 00:00:00.0','%Y-%m-%d'),

    日期向前后增加:DATE_ADD('2021-08-31 00:00:00.0',interval -1 DAY),

    if的使用:if(t.dt< '2021-08-23',t.vip_index+t.vod_index,0)) allIdxIndex,

    秒转date:FROM_UNIXTIME(秒)   eg:FROM_UNIXTIME(1568419200000/1000) --->  2019-09-14 08:00:00.0000,

    日期向前- 20天: DATE_SUB( 2019-09-14 08:00:00.0000,INTERVAL 20 DAY),

    日期转秒再转毫秒:UNIX_TIMESTAMP(#{nowDt})*1000,

    分组使用:一组中的数据拼接:group_concat(name) as  names,

    拼接字符串(经常在like查询时使用):concat('% ',#{key},'%') ,

    mybatis格式化小于等于:<![CDATA[ <= ]]>

    left join :

    第一条:

    select
    t.a_id ,
    sum(if(t.dt = DATE_ADD('2021-08-31 00:00:00.0',interval -1 DAY) ,t.vip_index+t.vod_index,0)) yesterdayIdxIndex ,
    sum(if(t.dt = DATE_ADD('2021-08-31 00:00:00.0',interval -2 DAY) ,t.vip_index+t.vod_index,0)) beforeYesterdayIdxIndex
    from
    
    (select album_id,dt,vip_index,vod_index from op_details_vip_idx_v2 where album_id IN ( 13, 14)
    
    ) t
    
    LEFT join
    op_details_album_meta album
    on t.album_id = album.album_id
    group by t.album_id
    

      

    第二条:

    select
    t.a_id ,
    
    sum(if(t.dt = DATE_ADD(2021-08-31 00:00:00.0,interval -1 DAY) ,t.vip_index+t.vod_index,0)) yesterdayIdxIndex ,
    sum(if(t.dt = DATE_ADD(2021-08-31 00:00:00.0,interval -2 DAY) ,t.vip_index+t.vod_index,0)) beforeYesterdayIdxIndex
    from op_details_vip_idx_v2 t
    LEFT join
    op_details_album_meta aa
    on t.album_id = aa.album_id
    where t.album_id IN (13, 14)
    group by t.album_id
    

     第一条和第二条过滤条件不一样,第二条可能会导致左连接失效,故用第一条比较好 

  • 相关阅读:
    K8s学习笔记
    NETCore在Centos下的内存泄漏排查
    搭建Linux下GO的开发环境
    Docker 运行mysql8.0挂载数据卷
    一张图解释Docker
    NetCore基于Consul+Ocelot+Docker+Jenkin搭建微服务架构
    Jenkins+Docker+Git实现自动化部署
    使用阿里云容器镜像服务示例
    Go重新学习记录
    软谋在线教育诚招php,java,.net,设计师讲师(可兼职)
  • 原文地址:https://www.cnblogs.com/pengtaotao/p/15216035.html
Copyright © 2011-2022 走看看