解决方案 »

  1.   

    select distinct * from tableName 
      

  2.   

    来点儿数据吧,这样是没有结果的。看来楼主对GROUP BY的理解还不够深。请参考:
    SELECT
    fieldA,
    fieldB,
    MAX(fieldC),
    MAX(fieldD)
    FROM tb
    GROUP BY
    fieldA,
    fieldB
      

  3.   

    group by 是分级统计的,没有参加分组统计的字段,用必须用到集合函数sum(),count(),avg等或许方便的话,你可以帖一点测试数据出来
      

  4.   


    a b c
    * * 星期1
    * * 星期1
    * * 星期2
    * * 星期3
    * * 星期2我现在就想将查出来的这5条数据中的C字段取出123三个数据,重复的就不要了类似于std::set的功能
      

  5.   

    if OBJECT_ID('tempdb..#temp', 'u') is not null   drop table #temp;
    go
    create table #temp( [a] varchar(100), [b] varchar(100), [c] varchar(100));
    insert #temp
    select '*','*','星期1' union all
    select '*','*','星期1' union all
    select '*','*','星期2' union all
    select '*','*','星期3' union all
    select '*','*','星期2' --#1.楼主给的数据不全,其实还有其它几种写法:
    SELECT b.* FROM
    (select DISTINCT c from #temp) a
    CROSS APPLY
    (SELECT TOP(1) * FROM #temp m WHERE m.c=a.c ORDER BY GETDATE()) b--#2.
    ;WITH cte AS
    (
    SELECT rowid =ROW_NUMBER() OVER(PARTITION BY c ORDER BY GETDATE()), * FROM #temp
    )
    SELECT a,b,c FROM cte
    WHERE rowid = 1
    /*
    a b c
    * * 星期1
    * * 星期2
    * * 星期3
    */
      

  6.   

    if OBJECT_ID('tempdb..#temp', 'u') is not null   drop table #temp;
    go
    create table #temp( [a] varchar(100), [b] varchar(100), [c] varchar(100));
    insert #temp
    select '*','*','星期1' union all
    select '*','*','星期1' union all
    select '*','*','星期2' union all
    select '*','*','星期3' union all
    select '*','*','星期2' --#1.楼主给的数据不全,其实还有其它几种写法:
    SELECT b.* FROM
    (select DISTINCT c from #temp) a
    CROSS APPLY
    (SELECT TOP(1) * FROM #temp m WHERE m.c=a.c ORDER BY GETDATE()) b--#2.
    ;WITH cte AS
    (
    SELECT rowid =ROW_NUMBER() OVER(PARTITION BY c ORDER BY GETDATE()), * FROM #temp
    )
    SELECT a,b,c FROM cte
    WHERE rowid = 1
    /*
    a b c
    * * 星期1
    * * 星期2
    * * 星期3
    */
    比如现在又3个字段,现在有5条数据
    a b c
    * * 3
    * * 3
    * * 0
    * * 0
    * * 1我需要查出来是三条
    * * 3
    * * 0
    * * 1
    具体是哪一条没关系,只要C字段的值不重复就行
      

  7.   

    用distinct 过滤掉重复数据
    select distinct *
    from tb
      

  8.   

    select min(id) id,min(project_id) project_id,min(submit_data_name) submit_data_name,simulation_section from simulation_submit_data where project_id = 1 group by simulation_section
    将simulation_section字段去重,因为group by需要将分组前面的所有字段都加上,所以我将不用分组的字段加了一个min并显示出来,目的是不让其它字段参加分组,在个因为我对顺序没要求,所以这么做就OK了
      

  9.   

    是的,只要是不参与分组的字段都用聚合函数处理就行,例如min()或者max()等