数据格式:
1    red
2    red 
3    red 
4    blue
5    blue
6    blue
7    blue 
需要查询成这样的结果
1    red
4    blue
不知道这样的sql如何写!~

解决方案 »

  1.   

    select min(id),color
    from tb
    group by color
      

  2.   

    SELECT MIN(col1),col2 FROM tb GROU PBY col2
      

  3.   

    select min(ID),[color] from TableName group by [color]
      

  4.   

    select min(id),color
    from tb
    group by color
      

  5.   


    SELECT *   FROM  TABLE_NAME A WHERE  NOT EXISTS
    (SELECT * FROM  TABLE_NAME B WHERE B.ID<A.ID AND B.COLOUR=A.COLOUR)
      

  6.   

    SELECT MIN(col1) , col2 FROM tb GROUP BY col2
      

  7.   

    --> 测试数据:@tb
    declare @tb table([id] int,[color] varchar(4))
    insert @tb
    select 1,'red' union all
    select 2,'red' union all
    select 3,'red' union all
    select 4,'blue' union all
    select 5,'blue' union all
    select 6,'blue' union all
    select 7,'blue'
     select * from @tb  t where 
    not exists(select 1 from @tb where color=t.color and  id<t.id)/*
    id          color
    ----------- -----
    1           red
    4           blue(2 行受影响)
    */
      

  8.   

    select * from table_name where id in(select min(id) from table_name group by color)
      

  9.   

    select 
      a.* 
    from 
      tb a 
    join (select min(ID)ID,color from tb group by color) b on 
      a.color=b.color 
    and 
      a.ID=b.ID
      

  10.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(我是小F,向高手学习)
    -- Date    :2009-09-22 14:56:23
    -- Version:
    --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    -- Nov 24 2008 13:01:59 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go 
    create table [tb]([id] int,[color] varchar(4))
    insert [tb]
    select 1,'red' union all
    select 2,'red' union all
    select 3,'red' union all
    select 4,'blue' union all
    select 5,'blue' union all
    select 6,'blue' union all
    select 7,'blue'
    --------------开始查询--------------------------
    select 
      a.* 
    from 
      tb a 
    join (select min(ID)ID,color from tb group by color ) b on 
      a.color=b.color 
    and 
      a.ID=b.ID
    order by 
      id
    ----------------结果----------------------------
    /* id          color
    ----------- -----
    1           red
    4           blue(2 行受影响)*/
      

  11.   

    SELECT * FROM TB T WHERE ID=(SELECT MIN(ID) FROM TB WHERE COLOR=T.COLOR)
      

  12.   

    select min(id),color from tb group by color
      

  13.   

    只有两个字段,一二楼最方便,字段比较多,还是用:
    SELECT * 
    FROM TB T 
    WHERE ID=(SELECT MIN(ID) FROM TB WHERE COLOR=T.COLOR)