一、
在与其他表多表关联查询时,比如使用left join,left join 前面的表为主表,后面的表为子表。
子表为主表服务,子表条件跟在 on后面,关联条件也在on后面,举例:
a left join b on b.deleted=0 and a.id=b.aId
主表条件跟在where后面:比如:
a left join b on b.deleted=0 and a.id=b.aId
where a.deleted=0
二、在写sql时最好不要用某某字段“=null”,将等号替换为“is”,因为数据库有可能将“=null”中的null识别成null字符串
错误:a.deleted=null
正确:a.deleted is null
三、if函数用法
if(前置条件,前置条件为true时运行这里,前置条件为fasle时运行这里)
四、时间查询时尽量都用DATE_FORMAT函数
DATE_FORMAT函数用法:
DATE_FORMAT(a.time,'%Y-%m-%d %H:%i:%s')
前面是时间入参,后面是时间格式:年月日时分秒
最重要的是写sql时候一定要仔细!!!
最近一个上百行的sql出了十几个bug,差点把我肝去世
五、case when用法
当需要对查询到的数据做一些内容转换或者处理时候可以用case when 或者if,情况多时用case when
select
case
when a.deleted is ‘0’ then '未删除'
when a.deleted is ‘1’ then '已删除'
else '其他'
end as deleted
form table as a
解释:这段代码相当于查询table,设置table别名为’a’,当‘deleted’是‘0’时deleted的值为‘未删除’,当deleted的值为‘1’时deleted的值为已删除,如果既不等于0又不等于1则deleted的值为‘其他’,并且将此段函数的值设置别名为deleted