注:不能大面积改动原sql语句的结构还是用left join,最好是再原sql语句上增加语句
需求,现在的sql语句已经可以查询出来数据了(用的left join查2个表),现在需要将第三个表的数据也放进来,第三个表的表名“dede_addon17_video”,表内包含aid字段,需要将这个表的字段全部查出来并且原sql语句里的arc.typeid=tp.id并且也等于dede_addon17_video表里的aid字段,相当于arc.typeid=tp.id=dede_addon17_video.aid(可能不太准确)
原sql语句如下SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp on arc.typeid=tp.id WHERE arc.typeid IN (20) And arc.arcrank > -1 ORDER BY arc.sortrank desc LIMIT 0,3

解决方案 »

  1.   

    select *
    from dede_addon17_video A,(
    SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp on arc.typeid=tp.id WHERE arc.typeid IN (20) And arc.arcrank > -1)B
    where A.aid =B.id
      

  2.   


    还能用别的方法吗?因为只能不支持子查询,如还用left jion进行嵌套
      

  3.   

    不支持子查询的话,将原SQL语句生成表再连接 
      

  4.   

    create table newtt as 1楼SQL语句;
    select *  from dede_addon17_video A left join newtt b on ....
      

  5.   

    select *  from dede_addon17_video A left join newtt b o