pl/sql语句在数据库中存在一张表t1表示联系人,其中包含两个字段姓名(name),电话(tel),但由于某些原因导致数据重复,如下所示: Name Tel 张三 60121 张三 60121 张三 60121 李四 60125 李四 60125 王二 60126 王二 60126 写一个sql语句,删除重复记录,只保留有效记录。 提示: 可以通过oracle的rowid列实现
时间: 2023-12-03 21:43:08 浏览: 121
SQL语句删除数据表中重复的记录
可以使用以下PL/SQL语句来删除重复记录,只保留有效记录:
```
DELETE FROM t1
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM t1
GROUP BY name, tel
);
```
这条语句将根据姓名和电话号码分组,并保留每个组中的第一条记录,同时删除其他重复记录。由于我们使用了ROWID,因此可以确保在删除记录时不会误删任何有效记录。
注意:在实际使用中,应该先备份原始数据,以防误删或数据错误。
阅读全文