distinct 后跟一列的话是表示这列如有重的话只取一条,
distinct 跟多列的话是表示这N列都相同的行只取一行

解决方案 »

  1.   

    distinct是去重复值,也许楼主所选的表中刚好没有重复值的情况:
    create table #bb(id int,name varchar(10))
    insert #bb select 1,'aaa'
    union all select 2,'bbb'
    union all select 2,'bbb'
    union all select 2,'bbb'
    union all select 1,'aaa'
    union all select 3,'ccc'
    select * from #bb
    select distinct * from #bb
    --两个结果不同!
      

  2.   

    --没有重复记录的时候,两句当然效果一样,如果有重复,就不一样了,你执行下面两句试试;select id from syscolumns
    select distinct id from syscolumns
      

  3.   

    另外,distinct是对所有select出的字段去重复,而不是指定字段.例如,对于下面的数据:
    id     name
    1      aa
    2      bb
    2      cc
    2      ccselect distinct id,name from 表
    的结果是:
    id     name
    1      aa
    2      bb
    2      cc虽然id=2的记录有两条,但name不同,所以也不算重复
      

  4.   

    谢谢。distinct我终于明白了。;-)不过不好意思再追加一个问题:1.在sql语句中,为什么不能对int定义其类型,其不可手动定义原因?
    2.除int外,其它类型的都可以自定义吧?
      

  5.   

    不能对int定义类型? 你是指长度吧?int,bigint,smallint,tinyint,bit,money,datetime,smalldatetime,text,ntext,image,sql_variant,timestamp,uniqueidentifier这些数据类型的长度都是固定的.
      

  6.   

    具体的你看一下SQL的联机帮助,上面说得很详细的了.