oracle查询出表中某几个字段值不唯一的数据

假设有一张学生表,建表语句如下:

复制代码
--学生 student表
create table student(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
ssex varchar2(5),
birthday date
);

现计划创建唯一索引(sno,sname),由于数据录入失误导致这两列数据有重复数据,进而导致唯一索引创建失败。

因此我们需要先查询出表中这些捣乱的数据,并进行去重处理。

可使用如下语句查询重复数据:

复制代码
select T.*, T.ROWID
  from student  T
 where exists (select 1
          from student
         where sno = T.sno
           and sname = T.sname
           and ROWID != T.ROWID)

补充:

如果只是查询某一列的重复值(如:sno),语句更加简单,可以如下:

复制代码
select    t. *    from  student t , student tt  where  t.rowid != tt.rowid  and  t.sno = tt.sno
相关推荐
APguantou4 分钟前
NCRE-三级数据库技术-第13章-大规模数据库架构
数据库·数据库架构
前进的李工11 分钟前
MySQL用户管理与权限控制指南(含底层架构说明)
开发语言·数据库·sql·mysql·架构
刘~浪地球13 分钟前
Redis 从入门到精通(十一):持久化配置
数据库·redis·缓存
正在走向自律29 分钟前
深度剖析 KES 行标识体系:OID 与 ROWID 核心原理、实战案例及性能优化
数据库·oid·kes·rowid
一直都在57243 分钟前
MySQL索引优化
android·数据库·mysql
wjp@0011 小时前
SQL server导出导入数据
运维·服务器·数据库
脑子加油站1 小时前
MySQL8数据库高级特性
数据库·mysql
REDcker2 小时前
OpenSSL:C 语言 TLS 客户端完整示例
c语言·网络·数据库
zly35002 小时前
centos7 mysql 无法被远程连接
数据库·mysql
廿一夏2 小时前
MySql的增删改查
数据库·mysql·dba