查询基础
1.distinct:主要用于去重
2.order by:主要用于排序,默认是升序,desc降序
3.limit,offset:配合order by使用,limit表示截取多长,offset表示从哪里开始截,比如limit 4 offset 2,表示从第三个开始截取,截取4个
4.round(num,2)表示将num保留小数点后两位
5.ifnull(num,0)如果num是空,表示为0
SET运算符
一些经典问题
1.行转列问题
2.判断的写法
3.比较日期的值使用DATEDIFF
4.mysql中如何排名
举例:
select a.s_id,a.c_id,
@i:=@i+1 as i保留排名(依次排名,不考虑并列),
@k:=(case when @score=a.s_score then @k else @i end)
as rank不保留排名(存在并列),
@score:=a.s_score as score
from (select s_id,c_id,s_score from score
GROUP BY s_id,c_id,s_score ORDER BY s_score desc)a,
(select @k:=0,@i:=0,@score:=0)s
5.oracle数据库排名
举例:
select
s_id
,score
,rank() over(order by score desc) rank --按照成绩排名,纯排名
,dense_rank() over(order by score desc) dense_rank --按照成绩排名,相同成绩排名一致
,row_number() over(order by score desc) row_number --按照成绩依次排名
,ntile(3) over (order by score desc) group_s --按照分数划分成绩梯队
from s_score;
结果:
6.mysql日期处理
select s_birth,(DATE_FORMAT(NOW(),'%Y')-DATE_FORMAT(s_birth,'%Y') -
(case when DATE_FORMAT(NOW(),'%m%d')>DATE_FORMAT(s_birth,'%m%d') then 0 else 1 end)) as age
from student;
DATE_FORMAT(NOW(),’%Y’),取出年份
DATE_FORMAT(NOW(),’%m%d’),取出月份和日期
WEEK(DATE_FORMAT(NOW(),’%Y%m%d’)),计算第几周
MONTH(DATE_FORMAT(NOW(),’%Y%m%d’)),计算第几个月