mysql成长之路

何小玍的前端之路(不定时更新)【mysql成长记录】

– 1.排序问题
order by xx desc --降序
order by xx asc --升序
order by xx desc, asc --先降序再升序

– 2.行转列
select xx
from yy
left join aa a on yy.id = a.id and 条件a
left join aa b on yy.id = b.id and 条件b
left join aa c on yy.id = c.id and 条件c
left join aa d on yy.esc = d.id and 条件d

– 3.jfinal写法,在sql中使用if语句(sql中无法使用)
#if(xx != null && xx != ‘’)
and zz.yy = #para(xx)

– 4.ifnull 不为空
ifnull(xx.id)

– 5.根据sql得出的表再合并或处理
select *
from (
select *
from xx
where xx.id = #para(id);
)tt
group by tt.id

– 6.判断状态时
CASE MAX(ctaccountlog.billtype)
WHEN ‘tongcs’ THEN ‘发件’
WHEN ‘prepay’ THEN ‘充值’
ELSE ‘未知’ END AS billtype,

– 7.一对多,多的表
group_concat 合起来
max 最近的记录
min 最早的记录

– 8.对表中数据集合
count(【all】)【as 列别名】 返回表中的记录数
SELECT COUNT (
) as 学生总人数 FROM 学生表

– 9:查询天数
今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0
昨天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=1
7天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=7
30天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=30
本月的所有数据:select * from 表名 where DateDiff(mm,datetime类型字段,getdate())=0
本年的所有数据:select * from 表名 where DateDiff(yy,datetime类型字段,getdate())=0
函数语法:DATEDIFF ( datepart , startdate , enddate )。参数datepart表示日期计算单位,常用有d,m,yyyy这3个值(d-天数,m-月份,yyyy-年份)。
参数startdate表示计算的开始日期,简单点说是被减数,参数enddate表示结束日期,计算方式是enddate 中减去 startdate,值的单位取决于传入的datepart参数。

where date(psexptrack.cretime) = date(curdate()) – 日
where week(psexptrack.cretime) = week(curdate()) – 周
where month(psexptrack.cretime) = month(curdate()) – 月
where year(psexptrack.cretime) = year(curdate()) – 年
WHERE date(#para(psexptrack.cretime) = date(CURDATE())

今天是2013年5月20日。
date_sub(curdate(),interval 1 day) 表示 2013-05-19
date_sub(curdate(),interval -1 day) 表示 2013-05-21
date_sub(curdate(),interval 1 month) 表示 2013-04-20
date_sub(curdate(),interval -1 month) 表示 2013-06-20
date_sub(curdate(),interval 1 year) 表示 2012-05-20
date_sub(curdate(),interval -1 year) 表示 2014-05-20

根据查询结果批量修改数据
UPDATE ebsseller.tsordergrade INNER JOIN (
SELECT tsordergrade.isread,
tsordergrade.id
FROM ebsseller.tsorder
LEFT JOIN ebsseller.tsordergrade ON tsorder.id = tsordergrade.tsorderid
WHERE tsorder.payuser = 4558 AND tsordergrade.content IS NOT NULL
) tt ON tsordergrade.id =tt.id SET tsordergrade.isread = ‘1’

UPDATE a INNER JOIN (SELECT yy FROM b) c ON a.id =c.id SET a.xx = c.yy

– 时间限制在2个月内
AND tsordergrade.cretime BETWEEN DATE_SUB(NOW(), INTERVAL 2 MONTH) AND NOW()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值