表:
ID       PID                                        CID
1 975F0C73-51AA-4231-9032-2B4942EE63F7       1
2 54FCDABF-E505-47B7-8172-9E107589F53E       1
3 F8086E8F-81C4-411D-B07F-0968171C7872       1
4 E6359FFE-B813-45CF-8C63-11998D5CB990       1
5 022FF0E6-2589-493B-8F1C-0B2B6EE42B29       2
7 7FC95C46-9C06-4BCB-B733-3E30FC6B1E64       2
8 8038289F-F86F-4B0F-947F-5BCEE0102C36       3
9 E9DD1F68-97B1-4EBD-9760-19F36CE65810       3
10 2BB20D3B-D674-482B-A853-C9D34E2F7A18       3想将CID分组并只取出每组第一条记录。
如,得到:
1 975F0C73-51AA-4231-9032-2B4942EE63F7       1
5 022FF0E6-2589-493B-8F1C-0B2B6EE42B29       2
8 8038289F-F86F-4B0F-947F-5BCEE0102C36       3
SQl语句怎么写?

解决方案 »

  1.   

    select * from tablename a
    where id=(
    select top 1 id from tablename
    where cid=a.cid
    order by id 
    )
      

  2.   


    select *
    from tablename
    where id in
    (
    select min(id)
    from tablename
    group by CID
    )
      

  3.   

    declare @T table(ID int,PID varchar(50),CID int)
    insert into @T select 1 ,'975F0C73-51AA-4231-9032-2B4942EE63F7'     ,  1
    union all select 2 ,'54FCDABF-E505-47B7-8172-9E107589F53E'       ,1
    union all select 3 ,'F8086E8F-81C4-411D-B07F-0968171C7872'       ,1
    union all select 4 ,'E6359FFE-B813-45CF-8C63-11998D5CB990'       ,1
    union all select 5 ,'022FF0E6-2589-493B-8F1C-0B2B6EE42B29'       ,2
    union all select 7 ,'7FC95C46-9C06-4BCB-B733-3E30FC6B1E64'       ,2
    union all select 8 ,'8038289F-F86F-4B0F-947F-5BCEE0102C36'       ,3
    union all select 9 ,'E9DD1F68-97B1-4EBD-9760-19F36CE65810'       ,3
    union all select 10 ,'2BB20D3B-D674-482B-A853-C9D34E2F7A18'       ,3select * from @t a where not exists(select 1 from @t where CID=a.CID and ID<a.ID)