Heim Datenbank MySQL-Tutorial Oracle删除重复记录的几种方式

Oracle删除重复记录的几种方式

Jun 07, 2016 pm 05:29 PM
oracle

如果把一个文件多次导入数据库,可能会引入重复记录,那么有哪些方法可以删除重复记录呢?

Oracle删除重复记录的几种方式

如果把一个文件多次导入数据库,可能会引入重复记录,那么有哪些方法可以删除重复记录呢?

 REATE TABLE tbl_test(
  SER_NO NUMBER,
  FST_NM VARCHAR2(30),
  DEPTID NUMBER,
  CMNT  VARCHAR2(30));
 
 INSERT INTO tbl_test VALUES(1, 'aaaaa', 2004, 'xxx');
 INSERT INTO tbl_test VALUES(2, 'bbbbb', 2005, 'yyy');
 INSERT INTO tbl_test VALUES(1, 'aaaaa', 2004, 'xxx');
 INSERT INTO tbl_test VALUES(1, 'aaaaa', 2004, 'xxx');
 INSERT INTO tbl_test VALUES(3, 'ccccc', 2005, 'zzz');
 INSERT INTO tbl_test VALUES(2, 'bbbbb', 2005, 'yyy');
 
1.Using MIN(rowid) 最常用的方法,但是数据量大的话执行会很长时间
 
 DELETE FROM tbl_test
    WHERE ROWID NOT IN (SELECT  MIN (ROWID)
          FROM tbl_test
        GROUP BY ser_no, fst_nm, deptid, cmnt);
       
2.Using MIN(rowid) & Join 跟第一条差不多

 DELETE FROM tbl_test t
    WHERE t.ROWID NOT IN (SELECT MIN (b.ROWID)
          FROM tbl_test b
        WHERE b.ser_no = t.ser_no
          AND b.fst_nm = t.fst_nm
          AND b.deptid = t.deptid
          AND b.cmnt  = t.cmnt);
         
3.Using Subquery

 DELETE FROM tbl_test
 WHERE ser_no IN (SELECT ser_no FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)
 AND fst_nm IN (SELECT fst_nm FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)
 AND deptid IN (SELECT deptid FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)
 AND cmnt  IN (SELECT cmnt  FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)
 AND ROWID NOT IN (SELECT  MIN (ROWID)
 FROM tbl_test
    GROUP BY ser_no, fst_nm, deptid, cmnt
 HAVING COUNT (*) > 1)         
       
4. Using Nested Subqueries     

 DELETE FROM tbl_test a WHERE (a.ser_no, a.fst_nm, a.deptid, a.cmnt) IN (SELECT b.ser_no, b.fst_nm, b.deptid, b.cmnt
 FROM tbl_test b WHERE a.ser_no = b.ser_no AND a.fst_nm = b.fst_nm AND a.deptid = b.deptid AND a.cmnt  = b.cmnt AND
 a.ROWID  > b.ROWID);
               
5. Using Analytic Fucntions: 对于大表这是最有效的方法

 DELETE FROM tbl_test WHERE ROWID IN (SELECT rid FROM (SELECT ROWID rid,
 ROW_NUMBER () OVER (PARTITION BY ser_no, fst_nm, deptid, cmnt ORDER BY ROWID) rn FROM tbl_test)WHERE rn 1);             
     
6. CREATE-DROP-RENAME 对资源使用比较合理,,特别对于大表。但是如果需要回滚则会产生大量undo日志信息。
 
 CREATE  TABLE tbl_test1 NOLOGGING AS SELECT tbl_test .*
 FROM tbl_test tbl_test WHERE ROWID IN (SELECT rid
 FROM (SELECT ROWID rid, ROW_NUMBER() OVER (PARTITION BY ser_no, fst_nm, deptid, cmnt ORDER BY ROWID) rn
 FROM tbl_test) WHERE rn=1);
     
 DROP TABLE tbl_test; --drop the original table with lots of duplicate 
 
 RENAME tbl_test1 TO tbl_test; -- your original table without duplicates.

linux

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die Reihenfolge der Schritte zum Starten der Oracle-Datenbank ist Die Reihenfolge der Schritte zum Starten der Oracle-Datenbank ist May 10, 2024 am 01:48 AM

Die Startsequenz der Oracle-Datenbank ist: 1. Überprüfen Sie die Voraussetzungen. 3. Starten Sie die Datenbankinstanz. 6. Überprüfen Sie den Datenbankstatus . Aktivieren Sie den Dienst (falls erforderlich). 8. Testen Sie die Verbindung.

Wie lange werden Oracle-Datenbankprotokolle aufbewahrt? Wie lange werden Oracle-Datenbankprotokolle aufbewahrt? May 10, 2024 am 03:27 AM

Der Aufbewahrungszeitraum von Oracle-Datenbankprotokollen hängt vom Protokolltyp und der Konfiguration ab, einschließlich: Redo-Protokolle: Wird durch die maximale Größe bestimmt, die mit dem Parameter „LOG_ARCHIVE_DEST“ konfiguriert wird. Archivierte Redo-Protokolle: Bestimmt durch die maximale Größe, die durch den Parameter „DB_RECOVERY_FILE_DEST_SIZE“ konfiguriert wird. Online-Redo-Logs: nicht archiviert, gehen beim Neustart der Datenbank verloren und der Aufbewahrungszeitraum stimmt mit der Instanzlaufzeit überein. Audit-Protokoll: Wird durch den Parameter „AUDIT_TRAIL“ konfiguriert und standardmäßig 30 Tage lang aufbewahrt.

Wie viel Speicher benötigt Oracle? Wie viel Speicher benötigt Oracle? May 10, 2024 am 04:12 AM

Die von Oracle benötigte Speichermenge hängt von der Datenbankgröße, dem Aktivitätsniveau und dem erforderlichen Leistungsniveau ab: zum Speichern von Datenpuffern, Indexpuffern, zum Ausführen von SQL-Anweisungen und zum Verwalten des Datenwörterbuch-Cache. Die genaue Menge hängt von der Datenbankgröße, dem Aktivitätsgrad und dem erforderlichen Leistungsniveau ab. Zu den Best Practices gehören das Festlegen der geeigneten SGA-Größe, die Dimensionierung von SGA-Komponenten, die Verwendung von AMM und die Überwachung der Speichernutzung.

So lesen Sie eine DBF-Datei in Oracle So lesen Sie eine DBF-Datei in Oracle May 10, 2024 am 01:27 AM

Oracle kann DBF-Dateien durch die folgenden Schritte lesen: Erstellen Sie eine externe Tabelle und verweisen Sie auf die DBF-Datei.

Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers May 10, 2024 am 04:00 AM

Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers: Prozessor: Multi-Core, mit einer Hauptfrequenz von mindestens 2,5 GHz. Für große Datenbanken werden 32 Kerne oder mehr empfohlen. Speicher: Mindestens 8 GB für kleine Datenbanken, 16–64 GB für mittelgroße Datenbanken, bis zu 512 GB oder mehr für große Datenbanken oder hohe Arbeitslasten. Speicher: SSD- oder NVMe-Festplatten, RAID-Arrays für Redundanz und Leistung. Netzwerk: Hochgeschwindigkeitsnetzwerk (10 GbE oder höher), dedizierte Netzwerkkarte, Netzwerk mit geringer Latenz. Sonstiges: Stabile Stromversorgung, redundante Komponenten, kompatibles Betriebssystem und Software, Wärmeableitung und Kühlsystem.

Wie viel Speicher wird für die Verwendung der Oracle-Datenbank benötigt? Wie viel Speicher wird für die Verwendung der Oracle-Datenbank benötigt? May 10, 2024 am 03:42 AM

Die für eine Oracle-Datenbank erforderliche Speichermenge hängt von der Datenbankgröße, dem Workload-Typ und der Anzahl gleichzeitiger Benutzer ab. Allgemeine Empfehlungen: Kleine Datenbanken: 16–32 GB, mittlere Datenbanken: 32–64 GB, große Datenbanken: 64 GB oder mehr. Weitere zu berücksichtigende Faktoren sind die Datenbankversion, Speicheroptimierungsoptionen, Virtualisierung und Best Practices (Speichernutzung überwachen, Zuweisungen anpassen).

Von Oracle geplante Aufgaben führen den Erstellungsschritt einmal täglich aus Von Oracle geplante Aufgaben führen den Erstellungsschritt einmal täglich aus May 10, 2024 am 03:03 AM

Um in Oracle eine geplante Aufgabe zu erstellen, die einmal täglich ausgeführt wird, müssen Sie die folgenden drei Schritte ausführen: Erstellen Sie einen Job. Fügen Sie dem Job einen Unterjob hinzu und legen Sie seinen Zeitplanausdruck auf „INTERVALL 1 TAG“ fest. Aktivieren Sie den Job.

Wie viel Speicher benötigt eine Oracle-Datenbank? Wie viel Speicher benötigt eine Oracle-Datenbank? May 10, 2024 am 02:09 AM

Der Speicherbedarf der Oracle-Datenbank hängt von den folgenden Faktoren ab: Datenbankgröße, Anzahl aktiver Benutzer, gleichzeitige Abfragen, aktivierte Funktionen und Systemhardwarekonfiguration. Zu den Schritten zur Bestimmung des Speicherbedarfs gehören die Bestimmung der Datenbankgröße, die Schätzung der Anzahl aktiver Benutzer, das Verständnis gleichzeitiger Abfragen, die Berücksichtigung aktivierter Funktionen und die Untersuchung der Systemhardwarekonfiguration.

See all articles