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

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

原文地址:https://www.cnblogs.com/pengtaotao/p/15216035.html