How to remove duplicate data in oracle
Oracle method to remove duplicate data: 1. Find all duplicate rows for the specified column and delete them. The method is count having; 2. Delete all duplicate rows. The code is [delete from nayi224_180824 t where t.rowid in].

#The operating environment of this article: Windows7 system, oracle9i version, Dell G3 computer.
Recommended (free): oracle database
oracle removes duplicate data Method:
Create test data
create table nayi224_180824(col_1 varchar2(10), col_2 varchar2(10), col_3 varchar2(10)); insert into nayi224_180824select 1, 2, 3 from dual union allselect 1, 2, 3 from dual union allselect 5, 2, 3 from dual union allselect 10, 20, 30 from dual ;commit;select*from nayi224_180824;
| COL_2 | COL_3 | |
|---|---|---|
| 2 | 3 | |
| 2 | 3 | |
| 2 | 3 | |
| 20 | 30 |
distinct
select distinct t1.* from nayi224_180824 t1;
| COL_3 | ||
|---|---|---|
| 30 | ##1 | |
| 3 | 5 | |
| 3 | The method has great limitations. Because it can only deduplicate all query columns. If I want to deduplicate col_2 and col3, then my result set can only have col_2 and col_3 columns, but not col_1. |
| ##2 | |
|---|---|
| 20 | 30 |
| But it is also the simplest and easiest way to understand. |
COL_1
| RN | 1 | ||
|---|---|---|---|
| 1 | 10 | 20 | |
| 1 | ##It’s a lot more troublesome to write, but it has greater flexibility . |
select * from nayi224_180824 t
where (t.col_2, t.col_3) in (select t1.col_2, t1.col_3
from nayi224_180824 t1
group by t1.col_2, t1.col_3
having count(1) > 1)
COL_1
COL_2| ##1 | 2 | |
|---|---|---|
| 1 | 2 | 3 |
| ##5 | 2 | 3 |
| #The table needs to be checked twice, so the efficiency will be relatively low. Not recommended. | count over |
COL_2
COL_3| ##1 | 2 | 3 | |
|---|---|---|---|
| 1 | 2 | 3 | 3 |
| ##5 | 2 | 3 | 3 |
| You only need to check the table once, recommended. | Delete all duplicate rows | delete from nayi224_180824 t where t.rowid in ( select rid from (select t1.rowid rid, count(1) over(partition by t1.col_2, t1.col_3) rn from nayi224_180824 t1) t1 where t1.rn > 1); | is a slight modification of the above statement.
Analytical function method
delete from nayi224_180824 t where t.rowid in (select rid
from (select t1.rowid rid,
row_number() over(partition by t1.col_2, t1.col_3 order by 1) rn
from nayi224_180824 t1) t1
where t1.rn > 1);Has the consistent high flexibility of analytical functions . You can do whatever you want with the grouping and change the orderby clause to achieve requirements like "retain the maximum id".
group by
delete from nayi224_180824 t where t.rowid not in
(select max(rowid) from nayi224_180824 t1 group by t1.col_2, t1.col_3);Sacrifice some flexibility in exchange for higher efficiency.
The above is the detailed content of How to remove duplicate data in oracle. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Clothoff.io
AI clothes remover
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
How to concatenate multiple columns into one in Oracle?
Aug 03, 2025 am 10:40 AM
Usethe||operatortoconcatenatemultiplecolumnsinOracle,asitismorepracticalandflexiblethanCONCAT();2.Addseparatorslikespacesorcommasdirectlywithintheexpressionusingquotes;3.HandleNULLvaluessafelysinceOracletreatsthemasemptystringsduringconcatenation;4.U
How to use the WITH clause in Oracle
Aug 21, 2025 am 08:28 AM
TheWITHclauseinOracle,alsoknownassubqueryfactoring,enablesdefiningcommontableexpressions(CTEs)forimprovedqueryreadabilityandperformance.1.ThebasicsyntaxusesWITHcte_nameAS(SELECT...)followedbyamainqueryreferencingtheCTE.2.AsingleCTEexamplecomputesaver
How to create a sequence in Oracle?
Aug 13, 2025 am 12:20 AM
Use the CREATESEQUENCE statement to create sequences, which are used to generate unique values, often used for primary or proxy keys; 2. Common options include STARTWITH, INCREMENTBY, MAXVALUE/MINVALUE, CYCLE/NOCYCLE and CACHE/NOCACHE; 3. Get the next value through NEXTVAL, and CURRVAL gets the current value; 4. You can use sequence values to insert data in the INSERT statement; 5. It is recommended to avoid cache to prevent the loss of values due to crashes, and the sequence values will not be released due to transaction rollback; 6. Use DROPSEQUENCE to delete sequences when no longer needed.
What is the difference between a view and a materialized view in Oracle?
Aug 13, 2025 am 08:29 AM
Aviewdoesnotstoredataphysicallyandexecutestheunderlyingqueryeachtimeitisaccessed,whileamaterializedviewstoresthequeryresultasaphysicaltable.2.Materializedviewsgenerallyofferfasterqueryperformancebecausetheyaccessprecomputeddata,whereasviewscanbeslowe
How to troubleshoot ORA-12541: TNS:no listener
Aug 13, 2025 am 01:10 AM
First, confirm whether the listener on the database server has been started, use lsnrctlstatus to check, if it is not running, execute lsnrctlstart to start; 2. Check whether the HOST and PORT settings in the listener.ora configuration file are correct, avoid using localhost, and restart the listener after modification; 3. Use the netstat or lsof command to verify whether the listener is listening on the specified port (such as 1521). The client can test port connectivity through telnet or nc; 4. Ensure that the server and network firewall allow the listening port communication, the Linux system needs to be configured with firewalld or iptables, and Windows needs to enable inbound
Oracle JDBC connection string example
Aug 22, 2025 pm 02:04 PM
Usejdbc:oracle:thin:@hostname:port:sidforSID-basedconnections,e.g.,jdbc:oracle:thin:@localhost:1521:ORCL.2.Usejdbc:oracle:thin:@//hostname:port/service_nameforservicenames,requiredforOracle12c multitenant,e.g.,jdbc:oracle:thin:@//localhost:1521/XEPDB
ORA-01017: invalid username/password; logon denied
Aug 16, 2025 pm 01:04 PM
When encountering an ORA-01017 error, it means that the login is denied. The main reason is that the user name or password is wrong or the account status is abnormal. 1. First, manually check the user name and password, and note that the upper and lower case and special characters must be wrapped in double quotes; 2. Confirm that the connected service name or SID is correct, and you can connect through tnsping test; 3. Check whether the account is locked or the password expires, and the DBA needs to query the dba_users view to confirm the status; 4. If the account is locked or expired, you need to execute the ALTERUSER command to unlock and reset the password; 5. Note that Oracle11g and above versions are case-sensitive by default, and you need to ensure that the input is accurate. 6. When logging in to special users such as SYS, you should use the assysdba method to ensure the password.
How to install Oracle Database
Aug 29, 2025 am 07:51 AM
Ensure that the system meets prerequisites such as hardware, operating system and swap space; 2. Install the required software packages, create oracle users and groups, configure kernel parameters and shell restrictions; 3. Download and decompress the Oracle database software to the specified directory; 4. Run runInstaller as oracle user to start graphical or silent installation, select the installation type and execute the root script; 5. Use DBCA to create the database silently and set the instance parameters; 6. Configure ORACLE_BASE, ORACLE_HOME, ORACLE_SID and PATH environment variables; 7. Start the instance through sqlplus/assysdba and verify the database status, confirm that the installation is successful,


