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
相关推荐
m0_49393453几秒前
Go语言中 & 与 - 的本质区别及指针使用详解
jvm·数据库·python
gjc59211 分钟前
踩坑案例:容器方式部署的MySQL无法访问?
数据库·mysql
Greyson113 分钟前
Redis如何解决哨兵通知延迟问题_优化客户端连接池动态刷新拓扑的订阅监听机制
jvm·数据库·python
bekote14 分钟前
笔记|数据库
数据库·笔记
Dream of maid20 分钟前
Mysql(8)约束
数据库·mysql
程序边界42 分钟前
KingbaseES 表空间目录自动创建特性深度解析(下篇)
数据库·oracle
Jul1en_44 分钟前
【Redis】Zset类型、命令及应用场景
数据库·redis·缓存
晨曦夜月1 小时前
mysql事务的基本操作
数据库·mysql
那个失眠的夜1 小时前
AspectJ
java·开发语言·数据库·spring
亚空间仓鼠1 小时前
NoSQL数据库Redis(一):数据库基础
数据库·redis·nosql