mysql同⼀张表查询leftjoin
今天⾥有同学发了⼀个题:
⼀张表,如图
需要写⼀个sql ,输出如下结果
sql left join 多表连接
对这个表进⾏⼀下简单解释,其实就是省市区的关系,放在了同⼀张表中,level=1表⽰省, level=2表⽰市,level=3表⽰区
code是他们进⾏关系的⼀种表现。
就利⽤code做⽂章
sql如下:
SELECT IF(t.name=t1.name,t.name,IF(t1.name=t2.name,CONCAT(t.name,"-",t1.name),CONCAT(t.name,"-",t1.name,"-",t2.name)))  FROM Test t LEFT J
这个sql肯定需要left join 连表,因为需要3个字段,所以连3次表,利⽤好code直接的关系,但是不要忘记code相等的情况
code间的关系,是省市的前缀是⼀样的,市区的前缀是⼀样的,⾪属关系就这样判断:
省市:(de)<=9000 AND (de)>=1000 AND (de)%1000=0
市区:(de)<1000 AND (de)>0
⾸先我先写了这样的sql:
SELECT t.name,t1.name,t2.name  FROM Test t LEFT JOIN Test t1 ON ((de)<=9000 AND (de)>=1000 AND (de)%1000结果如图:
看到这个结果,只需要在select 中使⽤IF函数进⾏判断了,结果就出来了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。