根据某个字段(例如code)去掉重复的记录,但要得到其他字段值.我说的应该很明白了吧

解决方案 »

  1.   

    举个例子,比如数据库中有如下数据   
      a1           a2           code           a3           a4   
      1             a             aaa         a             a   
      2             b             bbb         b             b   
      3             c             aaa         c             c   
      4             d             bbb         d             d   
      5             e             eee         e             e   
      6             f             ddd         f             f   
      7             g             bbb         g             g   
      8             h             eee         h             h   
      9             i             eee         i             i   
      10           j             aaa         j             j   
      如何用一条语句取得这样记录集,去掉code中重复的字段,取a1是最小的,如下   
      a1           a2             code          a3           a4   
      1             a             aaa         a             a   
      2             b             bbb         b             b   
      5             e             eee         e             e   
      6             f             ddd         f             f
      

  2.   

    distinct 和 group by 能同时使用吗?
    根据某个字段(例如code)去掉重复的记录,但要得到其他字段值. 
    这个应该用到嵌套语句。
      

  3.   

    这是不现实的,因为
     1             a             aaa         a             a   
    3             c             aaa         c             c    
    应该如何取舍?
    你应该给出另外的限制 
      

  4.   

    select max(a),code,... from table group by code
      

  5.   

    SELECT *
    FROM table1
    WHERE a1 in
    (SELECT min(a1)
    FROM table1
    GROUP BY code);
      

  6.   

    没想到什么好办法, 不过你可以把code可能存在的值记下来,然后用union把每个code所对应的第一条记录组合起来。如下面的伪码:select top 1 * from test where code = 'aaa' union select top 1 * from test where code = 'bbb' ......