需求是这样的:从a表查图片,同时联合b表查图片的图片集名称,联合c表查图片的评论现在只想得到从c表得到一条记录,该如何写?现在的语句大概是这样的 select a.*,b.name,c.* from a as a left join b as b on a.pid =b.pid left join c as c on a.pid = c.pid where a.pid = XXX但是这样查出来的结果是有多少条评论,就有多少条数据,该如何修改?另求分析一条sql语句出来与查完A表用php foreach循环来查b c 再拼接到一起,效率相差大不大只有20分了~~~
mysqljoinsql

解决方案 »

  1.   

    上边说的不准确,现在是有n张图片,每个图片有cx条评论就有c1+c2+c3+...+cn条记录
    不想要这样的 就想要n条
      

  2.   

    分开查也可以,第一步只关联 a、b表 他们是1对1关系 和 C表是一对多关系,直接关联肯定会查出来多条记录
    所以可在第二步是根据图片id 查出评论内容
      

  3.   


    恩 我明白这种情况 所以想问的就是只用一条sql语句的话能否实现
      

  4.   

    按照现在这种情况其实也可以的 按照pid排序,在程序里判断是否是下一个pid,懂我意思不?
    sql的话看楼下还有没有更好的解决方案
      

  5.   

    limit 1不行吗
    或者用group by c.主键
      

  6.   

    后面连上: group by c.pid