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
相关推荐
亓才孓14 小时前
[Mybatis]Mybatis框架
java·数据库·mybatis
tod11314 小时前
Redis 主从复制与高可用架构:从原理到生产实践
数据库·redis·架构
l1t14 小时前
DeepSeek辅助生成的PostgreSQL 表结构设计幻灯片脚本
数据库·postgresql
橘子1314 小时前
redis哨兵
数据库·redis·缓存
yzs8714 小时前
OLAP数据库HashJoin性能优化揭秘
数据库·算法·性能优化·哈希算法
与衫14 小时前
如何将SQLFlow工具产生的血缘导入到Datahub平台中
java·开发语言·数据库
l1t15 小时前
DeepSeek辅助生成的PostgreSQL 执行计划分析幻灯片脚本
数据库·postgresql
_千思_15 小时前
【小白说】数据库系统概念 5
数据库
014-code15 小时前
Redis 分布式锁:从 0 到 1 完整演变
数据库·redis·分布式
落羽的落羽15 小时前
【Linux系统】磁盘ext文件系统与软硬链接
linux·运维·服务器·数据库·c++·人工智能·机器学习