假设现在有如下N条记录 表明叫article
id  author   title  
1   aaa      AAA
2   bbb      BBB
3   ccc      CCC
4   ddd      DDD
5   eee      AAA
现在想从这5条记录中查询所有title不重复的记录
select distinct title,author from article 这样是不可以的 因为distinct只能作用于一个字段
想请教应该怎么写 

解决方案 »

  1.   

    select a.* from tt a
    inner join
    (select title from tt group by title having count(*)=1) b
    on a.title=b.title
      

  2.   

    你试过吗?我在ORACLE上试过,貌似跟你要求的结果差不多
      

  3.   

    select title,min(author)
    from article 
    group by title
      

  4.   

    楼主是只要一个TITLE字段不重复,而author是有不同的
      

  5.   

    我试过的 不能这么写 如果是select distinct title from article 这样是可以的
    我刚才试了一下这么写 达到我的要求了 select distinct title,author from article group by title
    大家还有什么好方法吗
      

  6.   

    select distinct a.* from tt a
    inner join
    (select title from tt group by title having count(*)=1) b
    on a.title=b.title条件应该写完全就行了。如果title和author完全相同,用distinct去掉就行了。
      

  7.   

    我的最新研究成果
    select a.* from book a right join (
    select max(id) id from book group by title) b on b.id = a.id
    where a.id is not null
      

  8.   

    这个查询效率还可以,你需要在title上做一个索引就行了。
    其实就2步
    1 select max(id) id from book group by title
    拿到所有的按照title分组的最大id,这样能保证得到的id里不会有重复的title.2 以这些id为基础,连接对应的表数据就行了。
    不要用in () 用 join的性能更好,同样,主键上一定得有索引。
      

  9.   

    如果title没有索引的情况下,两者差不多,
    如果title上有索引的话,显然你的方法select distinct title,author from article group by title; 比较好。
      

  10.   

    没错
    select distinct title,author from book group by title;这个效率明显更高,只不过不能出现id了,呵呵呵!如果这个表还有其它的字段,那么使用id 做一次外连接的效率会高一些。