在工作中写了人生的第一个查询语句,虽然是在原有基础上改的,但仍然学到了不少知识
代码:
select distinct m.id, (select z.jianc from model_zuzjg z where z.id=m.huoz_id) as huoz, (select mingc from model_pinz where id=m.meiz_id) as meiz, ifnull((select kc.shul from yw_kuczt kc where kc.meiduo_id=m.id ),0) as shul, m.duom,ll.longitude,ll.latitude , ifnull((select mb.shouc_beiz from model_tongd_bzxx mb where mb.tongd_id=m.tongd_id and mb.huoz_id=m.huoz_id and mb.meiz_id=m.meiz_id and mb.user_id='1'),'') as shouc_beiz, ifnull((select mb.shouc_status from model_tongd_bzxx mb where mb.tongd_id=m.tongd_id and mb.huoz_id=m.huoz_id and mb.meiz_id=m.meiz_id and mb.user_id='1'),0) as shouc_status, m.huoz_id, m.meiz_id from model_meidxx m inner join (select t.id,t.daim,t.tongdmc from model_tongd t, (select daim from model_jicss where (shangjdm='GXTSG' OR daim='GXTSG') AND fenl='B') j where t.suosjcss=j.daim) td on m.tongd_id=td.id inner join (select l.duo_id,l.longitude,l.latitude from model_meid_lbxx l group by l.duo_id) ll on m.id=ll.duo_id where m.state=1
解读(备忘):
1.子查询是可以作为一个临时参数来加入到select from where中的任何阶段的
2.as可以为表临时赋予一个别名或是表名 别名这样写
3.ifnull((),‘’)当查出来的数据不存在为null时,可以赋予一个其他值
4.distinct 去重取一次
其他:model_meidxx 是主表,所有的数据无论来自于什么表都需要以其为核心关联上,而最终的where则表示核心的查询条件。