我一直用distinctrow,感觉没问题

解决方案 »

  1.   

    你这条SQL能执行的?我怎么看着有错误啊
      

  2.   

    恩可以!
    现在解决了!
    在网上查了一下用DISTINCT和DISTINCTROW都不行
    可以用GROUP by cdb_threads.subject
    谢谢楼上的兄弟!!
      

  3.   

    DISTINCT 只有全部select部分的相同才会被去掉,不是标题相同就去掉.你用group by cdb_threads.subject 吧
      

  4.   

    估计你这个比较难实现,因为你除了取出标题以外,还要取出其他的字段,因为DISTINCT根据你所有取出字段来取唯一。用group by 也只能取出group by 后面出现的字段。如果你在group by 后面把你要取出的字段都写上去subject还是会有重复的。不知道你碰到标题相同的纪录,根据什么规则取舍的。我这里写一个供参考(碰到标题相同的纪录,根据取出cdb_threads.fid最小的那个):
    SELECT  cdb_threads.subject,
    MIN(cdb_threads.fid) AS titleid
       FROM cdb_threads,cdb_forums 
      WHERE cdb_threads.fid in (17,37,46,11,45,39,38,47,35,36)
        And cdb_threads.subject in ($row[0]); 
    And cdb_forums.fid = cdb_threads.fid
    And length(cdb_threads.subject)>10
     GROUP by cdb_threads.subject 
     ORDER BY cdb_threads.dateline DESC LIMIT 0,14
    然后根据取得的titleid去检索出相应的记录。