问题出处:http://www.oracle.com.cn/viewthread.php?tid=146091&extra=page%3D2
求高手一个PL/SQL 语句的写法
表A的数据:
1 a b c
1 a b d
2 a b c
3 a b c
3 a b b
4 a b c
4 a b d
5 a b c
数据中, 第一列id表示组,id 为1与 id为4的数据完全相同, id为2及id为5的数据也完全相同
求删除语句的写法, 即删除数据中与其它组数据完全相同的数据, 示例中要删除 id=4或1 及 id=5或2的行
1 a b c
1 a b d
2 a b c
3 a b c
3 a b b
4 a b c
4 a b d
5 a b c
数据中, 第一列id表示组,id 为1与 id为4的数据完全相同, id为2及id为5的数据也完全相同
求删除语句的写法, 即删除数据中与其它组数据完全相同的数据, 示例中要删除 id=4或1 及 id=5或2的行
- DELETE FROM A
- WHERE A.ID IN (SELECT TOP_TMP.ID
- FROM (SELECT TMP_TABLE.ID,
- ROW_NUMBER() OVER(PARTITION BY TMP_TABLE.TMP_COL ORDER BY TMP_TABLE.ID) AS RN
- FROM (SELECT T.ID,
- WM_CONCAT(T.C1 || T.C2 || T.C3) AS TMP_COL
- FROM A T
- GROUP BY T.ID) TMP_TABLE) TOP_TMP
- WHERE TOP_TMP.RN ^= 1
- )