• 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
    

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

  • 相关阅读:
    初拾Java(问题一:404错误,页面找不到)
    新年新气象--总结过去,展望未来
    接口测试[整理]
    [转]SVN-版本控制软件
    浅谈黑盒测试和白盒测试
    Bug管理工具的使用介绍(Bugger 2016)
    P2805/BZOJ1565 [NOI2009]植物大战僵尸
    近期学习目标
    P3643/BZOJ4584 [APIO2016]划艇
    P5344 【XR-1】逛森林
  • 原文地址:https://www.cnblogs.com/pengtaotao/p/15216035.html
Copyright © 2020-2023  润新知