Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MySQL-Tabelle bereinigen mit DELETE - USING - JOIN

Frage Entwicklung Datenbanken

Mitglied: oliPro

oliPro (Level 1) - Jetzt verbinden

18.02.2010, aktualisiert 07:53 Uhr, 4819 Aufrufe, 3 Kommentare

Verknüpfte Tabellen bereinigen, wenn es einen Datensatz (der eigentlich verknüpft sein sollte) nicht gibt.

MySQL-Client-Version: 5.0.22

Vorhanden ist Tabelle A und Tabelle B, die über X miteinander verknüpft sein sollten.
Jetzt möchte ich prüfen, ob das auch immer der Fall ist.
Wo es nicht so ist, soll der komplette Eintrag aus Tabelle A gelöscht werden.

Mein Problem liegt darin, dass ich nicht weiss, wie ich abfragen soll.
So in der Art war mein Ansatz ...

DELETE FROM A
USING A, B
WHERE B.X nicht vorhanden
Mitglied: Biber
18.02.2010 um 09:37 Uhr
Moin oliPro,

da gibt es für geschätzte n mySQL-Anwender circa n hoch 3 verschiedene Möglichkeiten.
Mit LEFT JOIN, mit NOT EXISTS, mit Unterabfrage...

Würde ich von der Satzanzahl und Kardinalität der Daten in A und B abhängig machen.
Vermutlich das kürzeste wäre

01.
DELETE FROM A 
02.
 WHERE A.X <> ANY  (SELECT X FROM B); 
03.
-- oder gleichwertig das eher ungebräuchliche SOME 
04.
DELETE FROM A 
05.
 WHERE A.X <> SOME  (SELECT X FROM B);
Aber natürlich erstmal testen, was herauskommt bei einem
01.
SELECT A.* FROM A 
02.
 WHERE A.X <> ANY  (SELECT X FROM B);
Grüße
Biber
Bitte warten ..
Mitglied: oliPro
18.02.2010 um 09:47 Uhr
Hallo Herr Biber ...

danke für den Tipp! Leider liefern beide Methoden (AND + SOME) alle Datensätze zurück

Gruß, oliPro
Bitte warten ..
Mitglied: Biber
18.02.2010 um 10:31 Uhr
Moin oliPro,

deshalb habe ich ja geschrieben "Aber natürlich erstmal testen, was herauskommt bei einem SELECT.."

Dann nehmen wir eine der vielen anderen Möglichkeiten
01.
SELECT A.*   
02.
FROM A 
03.
LEFT JOIN B on A.X = B.X 
04.
WHERE B.X  IS NULL ;
-oder-
01.
SELECT A.* 
02.
FROM A 
03.
WHERE A.X NOT IN (SELECT B.X FROM B);
Wenn das plausibler aussieht, dann "SELECT A.*" durch "DELETE FROM A" ersetzen.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Datenbanken
MySQL - Join (4)

Frage von Thoomaas zum Thema Datenbanken ...

Windows Server
Server 2012 R2 Cleanmgr.exe mit Systemdateien bereinigen? Wie? (4)

Frage von busteron zum Thema Windows Server ...

Batch & Shell
gelöst PowerShell Domain Join (2)

Frage von Patrick-IT zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...