Select distinct A from T

Select A,max(B),Max(C) from T group by A

解决方案 »

  1.   

    select A,min(B),min(C) from T group by A
      

  2.   

    --只选择A列select distinct a from t
      

  3.   

    --包含其他列:select A,min(B),min(C) from T group by A
      

  4.   

    哇,全是高手,我赞同。 
    由于A可以对应多个B,C,所以你可以指定选大的还是小的。 
    当然别忘了分组。
      

  5.   

    各位说的都有道理,你们选出的记录是能保证A不同,但是有一个问题,但是由于A、min(B)和min(C)组成的记录在数据库中不一定有的,这样我选出的记录就没什么用了呀!我的原意是能不能用很简单的SQL语句实现把T表中所有的A列不重复的记录都抽出来,对于A列有重复的记录,任意抽取其中的一条。 不知道你们听懂我的意思没有?
      

  6.   

    create table #ttt
    (
     A type,
     B type,
     C type
    )
    create unique index removedups on #ttt(A) with IGNORE_DUP_KEYselect * from yourtable into #tttselect * from #ttt
      

  7.   

    sorry 错了一点create table #ttt
    (
     A type,
     B type,
     C type
    )
    create unique index removedups on #ttt(A) with IGNORE_DUP_KEYinsert into #ttt(A,B,C) (select * from yourtable)select * from #ttt
      

  8.   

    select DISTINCT a ,b,c from t group by a
      

  9.   

    to vileboy(丁仔) :我连测试数据都建好了,你就不能把你的语句运行一下试试吗?
      

  10.   

    distinct搞定的!你可以去查一下distinct的帮助文档!
      

  11.   

    拿你的用distinct的语句出来说话,别没事就让别人看文档,说实话,我不认为你理解distinct是干什么的
      

  12.   

    这是我一个下午试验的,不知道行不行,就是用sql server中的pubs数据库,大家试试,给我指正,我是菜鸟。
    ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    在authors中,根据state字段,在相同的state字段中随机取出一条记录。
    思路:
    把所有的state字段提取到一个游标state_cursor 中,再在游标中扫描,没扫描一个字段,就根据当前  关键字把authors表中state字段等于当前字段的记录提取到一个游标state_1_cursor 中,再在游标state_1_cursor 中随机的提取一条记录插入到临时表#test中。      
    ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    create procedure get_rnd_record
    asdeclare @state varchar(20),
    @var1  varchar(50), --保存记录中第一个字段
    @var2 varchar(50), --保存记录中第二个字段
    @var3  varchar(50) --保存记录中第三个字段
    create table #test(fld1 varchar(50),fld2 varchar(50),fld3 varchar(50))
    declare state_cursor cursor scroll for
    select distinct state from authors
    open state_cursor
    --FETCH RELATIVE 1 FROM state_cursor
    FETCH next from state_cursor into @state
    while @@FETCH_STATUS=0
    begin declare state_1_cursor cursor scroll for
    select state,au_fname,au_lname from authors where state=@state
    declare @row_count int --当前关键字的记录数
    declare @rnd_recd int  --随机记录数
    open state_1_cursor
    select state from authors where state=@state
    set @row_count=@@rowcount
    if @row_count=1 --如果只有一行
    begin
    FETCH next from state_1_cursor into @var1,@var2,@var3
    insert into #test values(@var1,@var2,@var3)
    end
    else --如果有多行
    begin
    set @rnd_recd=cast(right(RAND()*1000, 2) as int)--产生随机数
    while @rnd_recd>@row_count
    begin
    set @rnd_recd=cast(right(RAND()*1000, 2) as int)----产生随机数
    end
    FETCH relative @rnd_recd from state_1_cursor into @var1,@var2,@var3
    insert into #test values(@var1,@var2,@var3)
    end
    close state_1_cursor
    deallocate state_1_cursor --关闭游标
      FETCH next from state_cursor into @state
    end
    --fetch cursor1 into @i
    select * from #test
    drop table #test
    CLOSE state_cursor --关闭游标
    DEALLOCATE state_cursor