这是一个好友查询语句,好友是双向的,也就是你是我的好友,那么同时我也是你的好友:SELECT if(f.mid =2, f.fid, f.mid ) AS friendid, m.face, f.addtime FROM member_friends as f left join member as m on friendid = m.mid WHERE FIELD(2, f.fid, f.mid ) >0报错,说是friendid未定义,像这样的语句如何实现left join,子查询也不合适,因为还要从member_friends表提取addtime字段值不想将mid和fid分别left join member表然后查询,这样太浪费资源了,能否从筛选结果friendid来left join

解决方案 »

  1.   

    SELECT if(f.mid =2, f.fid, f.mid ) AS friendid, m.face, f.addtime FROM member_friends as f left join member as m on f.mid = m.mid WHERE FIELD(2, f.fid, f.mid ) >0 
      

  2.   

    SELECT if(f.mid =2, f.fid, f.mid ) AS friendid, m.face, f.addtime 
    FROM member_friends as f left join member as m on friendid = m.mid WHERE FIELD(2, f.fid, f.mid ) >0改成SELECT if(f.mid =2, f.fid, f.mid ) AS friendid, m.face, f.addtime 
    FROM member_friends as f left join member as m on if(f.mid =2, f.fid, f.mid ) = m.mid WHERE FIELD(2, f.fid, f.mid ) >0因为在做ON WHERE的时候还没有形成别名。
      

  3.   

    你直接将friendid->if(f.mid =2, f.fid, f.mid ),SELECT执行的顺序<WHERE<ON<FROM