有一个表的结构是这样的
    id      bookname             cbs          zz
   001      asp大全           清华大学出版社     田正平
    002      数据库系统教程    高等教育出版社     周奥英
    003      asp大全           清华大学出版社     田正平现在我想做一个查询,要查找出的字段如下
      bookname, cbs, zz按bookname字段过滤记录,但要显示多个字段
查询的结果应为
   bookname        cbs    zz
   asp大全         清华大学出版社     田正平
   数据库系统教程  高等教育出版社     周奥英如何过滤重复的记录
谢谢!**********************************************************
SELECT DISTINCT bookname, cbs, zz FROM TABLE(此方法行不通)
**********************************************************

解决方案 »

  1.   

     DISTINCT 只对一个字段的 
      

  2.   

    create table #dd 

    [id] varchar(3),
    bookname varchar(100),
    cbs      varchar(100),
    zz       varchar(100)
    )insert #dd 
    select '001','asp大全','清华大学出版社','田正平'
    union
    select '002','数据库系统教程','高等教育出版社','周奥英'
    union
    select '003',' asp大全','清华大学出版社','田正平'select * from #ddSELECT DISTINCT ltrim(rtrim(bookname)) bookname, ltrim(rtrim(cbs)) cbs, ltrim(rtrim(zz))zz FROM #dddrop table #dd
      

  3.   

    LZ,昨天的问题还没解决?
    SELECT DISTINCT bookname, cbs, zz FROM TABLE(此方法行不通)
    以上语句在我本地执行后都能达到预期效果;建议你给出你建表的语句(生成的SQL也可以),方便大家测试;
      

  4.   

    DISTINCT 只对一个字段的 的说明是不正确的问题也许是在于题目录入时空格的存在!如果不使用ltrim(rtrim(x))的话,是不能得到预期结果的,原因是001和003的区别在于在asp前,003多了一个空格
      

  5.   

    SELECT DISTINCT bookname, cbs, zz FROM TABLE(此方法行不通)
    ???
    应该可以吧
    试着去掉空格LTrim(RTrim())
    SELECT DISTINCT LTrim(RTrim(bookname)), LTrim(RTrim(cbs)), LTrim(RTrim(zz)) FROM TABLE
      

  6.   

    Select bookname,cbs,zz  From tablename A Where bookname In(Select Top 1 bookname From tablename B Where A.id=B.id Order By bookname ) 
      

  7.   

    用distinct可以啊。不行的話可能是兩個字串不一樣,看錄入時是不是有空格
      

  8.   

    把要搜索的数据的主键distinct一下应该就可以