Der umgeschriebene Titel lautet: MySQL-Abfrageanweisungen, die für die Datenbereinigung geeignet sind
P粉413704245
P粉413704245 2023-09-03 18:23:21
0
1
463

Ich habe drei Tische. Eine Tabelle ist eine Reiseentfernungstabelle

Tabellenrouten erstellen ( Latte int, slng int, dlat int, dlng int, Abstand int );

Eine Tabelle ist eine Site-Tabelle

Tabellenseiten erstellen ( id int, Name varchar(100), Latein int, lng int );

Es gibt auch einen Tisch für Techniker

Tabelle fse erstellen ( id int, Name varchar(100), Latein int, lng int );

Die Reiseentfernungstabelle wird dynamisch über Google API-Anfragen gefüllt. Wenn es also neue Haltestellen oder neue Techniker gibt, werden alle neuen Fahrtstrecken über Google abgefragt und in der Routentabelle gespeichert.

Natürlich kann es auch vorkommen, dass ein Kunde oder Techniker abreist. In diesem Fall bleiben die Einträge der Distanztabelle auch dann in der Datenbank erhalten, wenn sie nicht mehr verwendet werden.

Ich möchte diese nicht verwendeten Zeilen in der Tabelle löschen. Ich suche also nach einer Abfrage, die alle „nicht vorhandenen“ Breiten-/Längengradkombinationen in der Tabelle „Standorte/Techniker“ entfernen kann, wie in den Kommentaren dieser Geige

geschrieben.

https://www.db-fiddle.com/f/mwF1iyZ7nn8rnDcE8Wstch/0

Ich könnte diese Abfrage selbst schreiben, aber meine einzige Lösung besteht darin, eine sehr große Anzahl von Unterabfragen zu verwenden. Aber ich frage mich, ob es einen effizienteren Weg gibt und hoffentlich können die SQL-Experten hier helfen?

P粉413704245
P粉413704245

Antworte allen (1)
P粉546179835

这个查询应该可以工作:

delete from routes where concat (slat,'|', slng) not in ( select concat(lat ,'|', lng) from sites union select concat(lat,'|',lng) from fse ) ;

它从表sitesfse中选择所有记录,并删除在子查询中找不到记录的routes表中的行。需要使用两列的concat,因为in只能处理一列。|只是用来分隔值的。

DB-Fiddle

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!