mysql常用sql笔记(不断追加中)

(1)case when和sum函数共用的写法:

select  sum(case when balanceChangeType='RECHARGE' then money end) as recharge,
sum(case when balanceChangeType='REFUNDS' then money end) as refunds from balance_record bd;

(2)分页:

总页数计算公式: int totalPage=(recordsNumber+pageSize-1)/pageSize;

起始索引计算公式:int startIndex=(currentPage-1)*pageSize;

结尾索引计算公式: int endIndex=startIndex+pageSize;

分页语句写法:String pageSql=sql+" limit "+startIndex+","+endIndex;

注:recordsNumber 总记录数;pageSize 每页条数;currentPage 当前页

(3)从集合里查数据

select sum(recharge) as recharge,sum(refunds) as refunds from (select  case when balanceChangeType='RECHARGE' then money end as recharge,
case when balanceChangeType='REFUNDS' then money end as refunds from balance_record bd
inner join user ur on ur._id=bd.user  where  1=1) t 

(4) unin all的用法

select sum(rows) from (
select COUNT(1) as rows from timetable_statistic ats  
inner join timetable t on t._id=ats.timetable and t.timetableType='ACTIVITY' 
inner join course c on t.course=c._id 
inner join school_zone sz on sz._id=ats.schoolZone 
where 1=1 union ALL
select COUNT(1) as rows from timetable_statistic ats  
inner join timetable t on t._id=ats.timetable and t.timetableType='OPEN' 
inner join course c on t.course=c._id 
inner join school_zone sz on sz._id=ats.schoolZone 
where 1=1 union ALL
select COUNT(1) as rows from timetable_statistic ats  
inner join timetable t on t._id=ats.timetable and t.timetableType='NORMAL' 
inner join course c on t.course=c._id 
inner join school_zone sz on sz._id=ats.schoolZone 
where 1=1 ) t



你可能感兴趣的:(case,when,mysql分页,all,unin)