天天看點

【SQL 學習】去掉重複行

“成對”的記錄 去掉其中一

其中 a----c   和 c-----a  “成對” 于是去掉其中一個,如,去掉c----a

     b----c   和 c-----b  “成對” 于是去掉其中一個,如,去掉c----b

下面是newid 提供的方法,很強大。。

least(lid,fid) 傳回兩個值中的最小值

greatest(lid,fid) 傳回兩個值中的最大值

SQL> create table d (lid varchar2(1) , fid varchar2(1));

Table created.

SQL> insert into d values ('a','b');

1 row created.

SQL> insert into d values ('a','c');

SQL> insert into d values ('a','d');

SQL> insert into d values ('b','c');

SQL> insert into d values ('b','d');

SQL> insert into d values ('c','a');

SQL> insert into d values ('c','b');

SQL> insert into d values ('c','f');

SQL> insert into d values ('d','f');

SQL> commit;

Commit complete.

SQL> select * from d;

L F

- -

a b

a c

a d

b c

b d

c a

c b

c f

d f

9 rows selected.

SQL> select distinct least(lid,fid) ,greatest(lid,fid) from d;

L G

7 rows selected.

SQL> select least(lid,fid) ,greatest(lid,fid) from d;--不加distinck