有一张表 table1
字段:
(key1,key2)是主键
表结构和部分数据如下:
key1, key2, field1, field2
001,  001,  f1,      f2
001,  002,  f3,      f4求一句sql语句,对key1去除相同的数据(即distinct),查询得到的结果是
001, 001, f1, f2在线等

解决方案 »

  1.   

    select distinct key 1,key2,filed1,filed2
    from table试试
      

  2.   

    我没描述清楚,不好意思,不用考虑key2, 按key1升序
    假设
    key1, key2, field1, field2
    001,  001,  f1,      f2
    001,  002,  f3,      f4
    001,  003,  f3,      f4
    002, 222, d2,      d2
    002, 333, d3,      d3结果是:
    001,  001,  f1,      f2
    002, 222, d2,      d2
    这个样子就行,按key1升序即可。
      

  3.   

    SQL> desc tmp_t1;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     KEY1                                               VARCHAR2(10)
     KEY2                                               VARCHAR2(10)
     FIELD1                                             VARCHAR2(10)
     FIELD2                                             VARCHAR2(10)SQL> insert into tmp_t1 values('001','001','f1','f2');已创建 1 行。SQL> insert into tmp_t1 values('001','002','f3','f4');已创建 1 行。SQL> select distinct key1,key2,field1,field2 from tmp_t1;KEY1       KEY2       FIELD1     FIELD2
    ---------- ---------- ---------- ----------
    001        001        f1         f2
    001        002        f3         f4楼主你是如何写的sql语句
    SQL> select distinct key1,key2,field1,field2
      2  from tmp_t1
      3  order by key1;KEY1       KEY2       FIELD1     FIELD2
    ---------- ---------- ---------- ----------
    001        001        f1         f2
    001        002        f3         f4
    001        003        f3         f4
    002        222        d2         d2
    002        333        d3         d3
      

  4.   

    key2不用管它,就当成只有key1一个主键即可
      

  5.   

    我就是对sql不大熟悉,才来求教于各位的
      

  6.   

    select key1, key2, field1, field2 
      from (
            select key1, key2, field1, field2,row_number() over(partition by key1 order by key1) as rn 
              from ta)
     where rn=1
      

  7.   

    我太急了,这话有误,纠正一下001,  001,  f1,      f2
    001,  002,  f3,      f4
    001,  003,  f3,      f4
    002, 222, d2,      d2
    002, 333, d3,      d3最终得到的是按key1升序并去除相同key1的结果。比如:
    001,  001,  f1,      f2
    002, 222, d2,      d2
      

  8.   

    你的意思是不是Key1相同的记录只取一条,而且这条记录的key2的值是这些记录中最小的?select key1, key2, field1, field2 
      from (select key1, key2, field1, field2,rank() over(partition by key1 order by key2) as rk 
              from ta) 
     where rk=1
      

  9.   

    这个肯定不行,结果是
    001,  001,  f1,      f2
    001,  002,  f3,      f4
    001,  003,  f3,      f4
    002, 222, d2,      d2
    002, 333, d3,      d3