有一张表 table1
字段:
(key1,key2)是主键
表结构和部分数据如下:
key1, key2, field1, field2
001, 001, f1, f2
001, 002, f3, f4求一句sql语句,对key1去除相同的数据(即distinct),查询得到的结果是
001, 001, f1, f2在线等
字段:
(key1,key2)是主键
表结构和部分数据如下:
key1, key2, field1, field2
001, 001, f1, f2
001, 002, f3, f4求一句sql语句,对key1去除相同的数据(即distinct),查询得到的结果是
001, 001, f1, f2在线等
from table试试
假设
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升序即可。
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
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
from (
select key1, key2, field1, field2,row_number() over(partition by key1 order by key1) as rn
from ta)
where rn=1
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
from (select key1, key2, field1, field2,rank() over(partition by key1 order by key2) as rk
from ta)
where rk=1
001, 001, f1, f2
001, 002, f3, f4
001, 003, f3, f4
002, 222, d2, d2
002, 333, d3, d3