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
相关推荐
Wyawsl14 小时前
Python操作MySQL数据库
数据库·python·mysql
水彩橘子14 小时前
PostgreSQL Streaming Replication 主从
数据库·postgresql
数厘14 小时前
2.3MySQL 表结构设计:提升 SQL 查询性能的关键
android·sql·mysql
亚马逊云开发者14 小时前
Amazon Aurora PostgreSQL 快速配置实战:两次点击秒级创建无服务器数据库,告别 VPC 子网安全组配置噩梦
数据库·postgresql·serverless
晴天sir14 小时前
Redis 在业务中的几种典型用法
java·数据库·redis
jnrjian15 小时前
B树index 的维护 Oracle
数据库·oracle
正在走向自律15 小时前
企业级数据库存储运维实战:表空间自动创建与存储架构深度优化
运维·数据库·架构·表空间
jnrjian15 小时前
Oracle 并发 锁
数据库
爱码小白15 小时前
MySQL 常用数据类型的系统总结
数据库·python·算法
被摘下的星星15 小时前
MySQL drop和delete的区别
数据库·mysql