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
相关推荐
z***026011 分钟前
springboot整合modbus实现通讯
数据库·spring boot·后端
CNRio14 分钟前
Oracle 9i-11g全平台安装介质及补丁集下载指南(2025年最新有效链接)
数据库·oracle
L***865318 分钟前
SQL 注入详解:原理、危害与防范措施
数据库·sql·oracle
弥生赞歌21 分钟前
MySQL 数据库集群高可用与可视化监控平台搭建实验报告
数据库·mysql
e***716724 分钟前
mysql用户名怎么看
数据库·mysql
管理大亨24 分钟前
MySQL数据实时同步Redis全攻略
数据库·redis·mysql
8***848230 分钟前
macOS安装Redis
数据库·redis·macos
j***827031 分钟前
MySQL 启动失败 (code=exited, status=1FAILURE) 异常解决方案
数据库·mysql
r***869844 分钟前
【MySQL 的数据目录】
数据库·mysql·adb
8***J1821 小时前
SQL进阶——JOIN操作详解
数据库·sql·oracle