ORACLE

Total Pageviews

Monday, 14 March 2022

Delete Duplicate Data from Table


create table Student_test(ROLLNO VARCHAR2(10) NOT NULL
                         ,STNAME VARCHAR2(30) NOT NULL
,PROGRAM VARCHAR2(10) NOT NULL
 ,FEES NUMBER NOT NULL);

alter table Student_test modify ROLLNO VARCHAR2(20) NOT NULL;
 
insert into Student_test values('10020220314','DILIP BAKSHI','MCA',42000);
insert into Student_test values('10020220314','DILIP BAKSHI','MCA',42000);
insert into Student_test values('10120220314','SANJAY SINHA','BCA',22000);
insert into Student_test values('10120220314','SANJAY SINHA','BCA',22000);

select ROLLNO,STNAME,PROGRAM,count(1) from Student_test
GROUP BY ROLLNO,STNAME,PROGRAM 
HAVING COUNT(1) >1
ORDER BY ROLLNO,STNAME,PROGRAM;

SQL> alter table student_test add constraint pk_student_test primary key(ROLLNO,STNAME,PROGRAM);
alter table student_test add constraint pk_student_test primary key(ROLLNO,STNAME,PROGRAM)
                                        *
ERROR at line 1:
ORA-02437: cannot validate (SYS.PK_STUDENT_TEST) - primary key violated
SQL>
SQL>  select * from student_test;
ROLLNO               STNAME                         PROGRAM          FEES
-------------------- ------------------------------ ---------- ----------
10020220314          DILIP BAKSHI                   MCA             42000
10020220314          DILIP BAKSHI                   MCA             42000
10120220314          SANJAY SINHA                   BCA             22000
10120220314          SANJAY SINHA                   BCA             22000

SQL> select ROLLNO,STNAME,PROGRAM,count(1) from Student_test
     GROUP BY ROLLNO,STNAME,PROGRAM
     HAVING COUNT(1) >1
     ORDER BY ROLLNO,STNAME,PROGRAM;  

ROLLNO               STNAME                         PROGRAM      COUNT(1)
-------------------- ------------------------------ ---------- ----------
10020220314          DILIP BAKSHI                   MCA                 2
10120220314          SANJAY SINHA                   BCA                 2

SQL> select * from student_test
     where rowid NOT IN (select max(rowid)  from student_test group by ROLLNO,STNAME,PROGRAM); 

ROLLNO               STNAME                         PROGRAM          FEES
-------------------- ------------------------------ ---------- ----------
10120220314          SANJAY SINHA                   BCA             22000
10020220314          DILIP BAKSHI                   MCA             42000

SQL> DELETE FROM Student_test WHERE rowid IN (
     SELECT MAX(rowid) FROM Student_test GROUP BY ROLLNO,STNAME,PROGRAM); 
2 rows deleted.
SQL>
SQL> alter table student_test add constraint pk_student_test primary key(ROLLNO,STNAME,PROGRAM);
Table altered.

SQL>

SQL SERVER
==================
delete T from 

(select Row_Number() Over(Partition By BINARY_CHECKSUM(*) order by %%physloc%% ) As RowNumber, * From Student_test) T
Where T.RowNumber > 1
----------------