例如某ADODataSet里有如下记录
Name     Age     School
Andy      16      ABC
Bill      15      ABC
Cindy     16      BBB
Danny     16      CCC
Eric      16      DDD
Fox       16      EEE上面School字段里,我们看到记录集里ABC学校的学生有2个,我只需要显示其中1个就可以了,请问如何做呢?ABC是由数据库动态生成的,事先是未知的。

解决方案 »

  1.   

    使用 DISTINCT 消除重复项
    DISTINCT 关键字可从 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行,包括重复的行。例如,如果在 titleauthor 中选择所有作者 ID 时未使用 DISTINCT,那么将会返回下列行(其中包括一些重复的行):USE pubs
    SELECT au_id
    FROM titleauthor下面是结果集:au_id       
    ----------- 
    172-32-1176 
    213-46-8915 
    213-46-8915 
    238-95-7766 
    267-41-2394 
    267-41-2394 
    274-80-9391 
    409-56-7008 
    427-17-2319 
    472-27-2349 
    486-29-1786 
    486-29-1786 
    648-92-1872 
    672-71-3249 
    712-45-1867 
    722-51-5454 
    724-80-9391 
    724-80-9391 
    756-30-7391 
    807-91-6654 
    846-92-7186 
    899-46-2035 
    899-46-2035 
    998-72-3567 
    998-72-3567 (25 row(s) affected)而使用了 DISTINCT 后,就能够除去重复项,而只查看唯一的作者 ID:USE pubs
    SELECT DISTINCT au_id
    FROM titleauthor下面是结果集:au_id       
    ----------- 
    172-32-1176 
    213-46-8915 
    238-95-7766 
    267-41-2394 
    274-80-9391 
    409-56-7008 
    427-17-2319 
    472-27-2349 
    486-29-1786 
    648-92-1872 
    672-71-3249 
    712-45-1867 
    722-51-5454 
    724-80-9391 
    756-30-7391 
    807-91-6654 
    846-92-7186 
    899-46-2035 
    998-72-3567 (19 row(s) affected)
      

  2.   

    Name     Age     School
    Andy      16      ABC
    Bill      15      ABC
    Cindy     16      BBB
    Danny     16      CCC
    Eric      16      DDD
    Fox       16      EEE我不单要School,而且包括Name, Age字段我都要,请问如何解决呢?
    DISTINCT只对完全重复的记录才合适,GROUP BY也一样。我的记录只有一个字段会重复,其他字段不重复的。