Le titre réécrit est : Instructions de requête MySQL adaptées au nettoyage des données
P粉413704245
P粉413704245 2023-09-03 18:23:21
0
1
585
<p>J'ai trois tables. Un tableau est un tableau des distances de déplacement</p> <pre class="brush:php;toolbar:false;">créer des routes de table ( latte int, lancer int, dlat int, dlng int, distance entière );</pré> <p>Une table est une table de site</p> <pre class="brush:php;toolbar:false;">créer des sites de tables ( identifiant int, nom varchar(100), latin entier, gnl int );</pré> <p>Il y a aussi une table pour les techniciens</p> <pre class="brush:php;toolbar:false;">créer une table fse ( identifiant int, nom varchar(100), latin entier, gnl int );</pré> <p>Le tableau des distances parcourues est renseigné dynamiquement via les requêtes de l'API Google. Ainsi, s'il y a de nouveaux arrêts ou de nouveaux techniciens, toutes les nouvelles distances parcourues sont demandées via Google et stockées dans le tableau de route. </p> <p>Bien entendu, il peut également arriver qu'un client ou un technicien parte. Dans ce cas, les entrées de la table de distance restent dans la base de données même si elles ne sont plus utilisées. </p> <p>Je souhaite supprimer ces lignes inutilisées du tableau. Je recherche donc une requête qui puisse supprimer toutes les combinaisons latitude/longitude "inexistantes" dans la table sites/techniciens, comme écrit dans les commentaires de ce violon</p> <p>https://www.db-fiddle.com/f/mwF1iyZ7nn8rnDcE8Wstch/0</p> <p>Je pourrais écrire cette requête moi-même, mais ma seule solution est d'utiliser un très grand nombre de sous-requêtes. Mais je me demande s'il existe un moyen plus efficace et j'espère que les experts SQL ici pourront vous aider ? </p>
P粉413704245
P粉413704245

répondre à tous(1)
P粉546179835

Cette requête devrait fonctionner :

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

Il sert simplement à séparer les valeurs du tableau sitesfse中选择所有记录,并删除在子查询中找不到记录的routes表中的行。需要使用两列的concat,因为in只能处理一列。|.

DB-Fiddle

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal